Dalla versione 3.2 puoi farlo con $unwind
su entrambi gli array, $cmp
gli indici e $match
solo gli indici uguali.
Questa soluzione popolerà ciò che hai scritto nel caso in cui tu abbia solo il documento di esempio. Se hai più documenti non so cosa ti aspetti di ottenere nell'output, ma è risolvibile raggruppando per _id del documento.
db.test.aggregate([
{
$unwind: {
path: '$dates',
includeArrayIndex: 'dates_index',
}
},
{
$unwind: {
path: '$numbers',
includeArrayIndex: 'numbers_index',
}
},
{
$project: {
dates: 1,
numbers: 1,
compare: {
$cmp: ['$dates_index', '$numbers_index']
}
}
},
{
$match: {
compare: 0
}
},
{
$project: {
_id: 0,
dates: 1,
numbers: 1
}
}
])