vla*_*mir 29 distinct mongodb nosql
假设我收集了以下文件:
{
"family": "Smith",
"children": [
{
"child_name": "John"
},
{
"child_name": "Anna"
},
]
}
{
"family": "Williams",
"children": [
{
"child_name": "Anna"
},
{
"child_name": "Kevin"
},
]
}
Run Code Online (Sandbox Code Playgroud)
现在我想以某种方式获得以下列出的所有系列的唯一子名称:
[ "John", "Anna", "Kevin" ]
Run Code Online (Sandbox Code Playgroud)
结果的结构可能不同.如何在MongoDB中实现这一目标?应该是简单的事情,但我无法弄清楚.我在集合上尝试了aggregate()函数,但后来我不知道如何应用distinct()函数.
Asy*_*sky 52
你可以这样做:
db.collection.distinct("children.child_name");
Run Code Online (Sandbox Code Playgroud)
在你的情况下,它返回:
[ "John", "Anna", "Kevin" ]
Run Code Online (Sandbox Code Playgroud)
使用帮助聚合框架:
db.collection.aggregate([{$unwind:'$children'}, {$group:{_id:'$children.child_name'}}])
Run Code Online (Sandbox Code Playgroud)
或更多的兴趣;)频率名称:
db.collection.aggregate([{$unwind:'$children'}, {$group:{_id:'$children.child_name', freq:{$sum:1}}}])
Run Code Online (Sandbox Code Playgroud)