我在mongoDB中有这样的架构
{
"key":"ru",
"regions":[
{
"name":"moskovskaya",
"cities":[
{
"name":"moskva"
},
{
"name":"tula"
}
]
},
{
"name":"piterskaya",
"cities":[
{
"name":"piter"
},
{
"name":"luga"
}
]
}
]
}
我有一些针对不同国家的模式的文件, 如何从该模式的每个文档中获取所有城市的数组?
答案 0 :(得分:3)
这是一个简单的查询。 distinct()
方法可以很好地完成工作。
db.collection.distinct("regions.cities.name")
产生:
[ "luga", "moskva", "piter", "tula" ]
答案 1 :(得分:2)
运行以下聚合管道:
db.collection.aggregate([
{ "$unwind": "$regions" },
{ "$unwind": "$regions.cities" },
{
"$group": {
"_id": null,
"cities": { "$push": "$regions.cities.name" }
}
}
])
示例输出
{
"result" : [
{
"_id" : null,
"cities" : [
"moskva",
"tula",
"piter",
"luga"
]
}
],
"ok" : 1
}