假设我们有一张这样的学校清单:
[
{
"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",
}
]
如果使用聚合框架,是否有可能得到一个按国家分列的独特城市列表,比如:
[
{
"country" : "Germany"
"cities" : [Frankfurt,Berlin, ...]
},
{
"country" : "Spain",
"cities" : [Madrid,Barcelona, ...]
}
]
发布于 2014-03-06 11:45:39
如果您想要“唯一”列表,就必须使用"$addToSet“而不是尼尔提到的"$push”。
db.collection.aggregate([
{"$group": {
"_id": "$country",
"cities": {"$addToSet": "$city" },
}},
{"$project": {
"_id": 0,
"country": 1,
"cities": 1
}}
])
发布于 2014-03-06 09:59:02
很简单。
db.collection.aggregate([
{"$group": {
"_id": "$country",
"cities": {"$addToSet": "$city" },
}},
{"$project": {
"_id": 0,
"country": 1,
"cities": 1
}}
])
阅读文档中的聚集样条操作符。
https://stackoverflow.com/questions/22220566
复制相似问题