私は2つのオブジェクトを持っています、
{
_id: ObjectId("5cd9010310b80b3e38cd3f88")
subGroup: [
bookList: [
{
title: "A good book",
id: "abc123"
}
]
]
}
{
_id: ObjectId("5cd9010710b80b3e38cd3f89")
subGroup: [
bookList: [
{
title: "A good book",
id: "abc123"
}
]
これらは2つの異なるオブジェクトです。タイトルが重複している(同じなど)これら2つのオブジェクトの発生を検出したいと思います。
このクエリを試しました
db.scope.aggregate({"$unwind": "$subGroup.bookList"}, {"$group" : { "_id": "$title", "count": { "$sum": 1 } } }, {"$match": {"id" :{ "$ne" : null } , "count" : {"$gt": 1} } })
私はstackoverflowの他のスレッドを見ました。しかし、それは私に何も返しません。どうすればこれを解決できますか?
ここにはいくつかの問題があります:
$unwind
上で実行されなければならないsubGroup
とにsubGroup.bookList
分けて_id
のために$group
、ステージあなたは(完全なパスを使用する必要がありますsubGroup.bookList.title
)$match
段階であなたは_id
(ではなくid
)がそうであるかどうかをチェックしたい$ne
null
試してみてください:
db.col.aggregate([
{"$unwind": "$subGroup"},
{"$unwind": "$subGroup.bookList"},
{"$group" : { "_id": "$subGroup.bookList.title", "count": { "$sum": 1 } } },
{"$match": { "_id" :{ "$ne" : null } , "count" : { "$gt": 1} } }
])
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加