让我们说我有一些看起来像这样的文件:
{
"stuff": [
{"thing": "A", "data": "helloworld"},
{"thing": "A", "data": "something"},
{"thing": "B", "data": "foobar"}
]
},
{
"stuff": [
{"thing": "A", "data": "something else"},
{"thing": "B", "data": "foobar"}
]
}
如何获取不同的data
列表,其中thing = A
仅 。
我知道如何使用以下方法find
这些子文档:
db.col.find({"stuff.thing": "A"}, {"stuff.$":1})
但是我找不到仅在匹配的子文档上进行distinct
查询的任何信息。
答案 0 :(得分:1)
您可以使用以下汇总。
db.col.aggregate([
{"$match":{"stuff.thing":"A"}},
{"$unwind":"$stuff"},
{"$match":{"stuff.thing":"A"}},
{"$group":{"_id":"$stuff.data"}
])