Depuis la version 3.2, vous pouvez le faire avec $unwind
sur les deux tableaux, $cmp
les index, et $match
uniquement les index égaux.
Cette solution remplira ce que vous avez écrit au cas où vous n'auriez que l'exemple de document. Si vous avez plus de documents, je ne sais pas ce que vous vous attendez à obtenir dans la sortie, mais cela peut être résolu en regroupant par _id du document.
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
}
}
])