バージョン3.2からは、$unwind
で実行できます。 両方のアレイで、$cmp
インデックス、および$match
等しいインデックスのみ。
このソリューションは、サンプルドキュメントしかない場合に備えて、作成した内容を入力します。さらにドキュメントがある場合は、出力に何が表示されるかわかりませんが、ドキュメントの_idでグループ化することで解決できます。
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
}
}
])