首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Mongodb农业

Mongodb农业
EN

Stack Overflow用户
提问于 2014-03-06 09:44:54
回答 2查看 48关注 0票数 0

假设我们有一张这样的学校清单:

代码语言:javascript
运行
复制
[
{
    "school_name” : "School #1",
    "city” : "Frankfurt",
    "country” : "Germany",
},
{
    "school_name” : "School #2",
    "city” : "Frankfurt",
    "country” : "Germany",
},
{
    "school_name” : "School #3",
    "city” : "Madrid",
    "country” : "Spain",
},
{
    "School_name” : "School #4",
    "city” : "Barcelona",
    "country” : "Spain",
}

]

如果使用聚合框架,是否有可能得到一个按国家分列的独特城市列表,比如:

代码语言:javascript
运行
复制
[
{
 "country" : "Germany" 
 "cities" : [Frankfurt,Berlin, ...]
},
{
 "country" : "Spain",
 "cities" : [Madrid,Barcelona, ...]
}

]

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-06 11:45:39

如果您想要“唯一”列表,就必须使用"$addToSet“而不是尼尔提到的"$push”。

代码语言:javascript
运行
复制
db.collection.aggregate([
    {"$group": { 
        "_id": "$country",
        "cities": {"$addToSet": "$city" },
    }},
    {"$project": { 
        "_id": 0,
        "country": 1,
        "cities": 1
    }}
])
票数 0
EN

Stack Overflow用户

发布于 2014-03-06 09:59:02

很简单。

代码语言:javascript
运行
复制
db.collection.aggregate([
    {"$group": { 
        "_id": "$country",
        "cities": {"$addToSet": "$city" },
    }},
    {"$project": { 
        "_id": 0,
        "country": 1,
        "cities": 1
    }}
])

阅读文档中的聚集样条操作符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22220566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档