Ab Version 3.2 geht das mit $unwind
auf beiden Arrays $cmp
die Indizes und $match
nur die gleichen Indizes.
Diese Lösung füllt das aus, was Sie geschrieben haben, falls Sie nur das Beispieldokument haben. Wenn Sie mehr Dokumente haben, weiß ich nicht, was Sie in der Ausgabe erwarten, aber es ist lösbar, indem Sie nach _id des Dokuments gruppieren.
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
}
}
])