Dari versi 3.2 Anda dapat melakukannya dengan $unwind
pada kedua array, $cmp
indeks, dan $match
hanya indeks yang sama.
Solusi ini akan mengisi apa yang Anda tulis jika Anda hanya memiliki dokumen contoh. Jika Anda memiliki lebih banyak dokumen, saya tidak tahu apa yang Anda harapkan dari output, tetapi ini dapat dipecahkan dengan mengelompokkan menurut _id dokumen.
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
}
}
])