同一のリストを取得したい場合(_id
を除く) フィールド、明らかに)コレクション内のドキュメント。これを行う方法は次のとおりです。
collection.aggregate({
$project: {
"_id": 1, // keep the _id field where it is anyway
"doc": "$$ROOT" // store the entire document in the "doc" field
}
}, {
$project: {
"doc._id": 0 // remove the _id from the stored document because we do not want to compare it
}
}, {
$group: {
"_id": "$doc", // group by the entire document's contents as in "compare the whole document"
"ids": { $push: "$_id" }, // create an array of all IDs that form this group
"count": { $sum: 1 } // count the number of documents in this group
}
}, {
$match: {
"count": { $gt: 1 } // only show what's duplicated
}
})
集計フレームワークの場合と同様に、すべてのステップをコメントアウトしてから、ステージごとにすべてを再度アクティブ化することで、各ステップで何が起こっているのかを正確に理解することができます。