我有一个收藏很多的文件。
我的文档结构如下:
这是一个可以获取json数据的api:
https://obscure-reaches-65656.herokuapp.com/api?city=TaipeiEast&theater=Centuryasia
我想查询没有重复的enName
的数据,所以我尝试使用$addToSet
这是我的查询命令:
db.getCollection('Keelung').aggregate([
{ "$match": {
"theater": "Centuryasia"
}
},
{ "$unwind": '$movie' },
{ "$group": {
"_id": "$_id",
"enName": {
"$addToSet": "$movie.enName"
},
"photoHref": {
"$addToSet": "$movie.photoHref"
}
}
}
])
我希望结构可以像这样:
movie: [
{ enName: "value", photoHref: "value"},
{ enName: "value", photoHref: "value"},
...
]
我尝试添加$push
db.getCollection('Keelung').aggregate([
{ "$match": {
"theater": "Centuryasia"
}
},
{ "$unwind": '$movie' },
{ "$group": {
"_id": "$_id",
"enName": {
"$addToSet": "$movie.enName"
},
"photoHref": {
"$addToSet": "$movie.photoHref"
}
},
"movie": {
"$push": {
"enName": "$enName",
"photoHref": "$photoHref",
}
}
}
])
它不起作用。
任何帮助将不胜感激。预先感谢。
答案 0 :(得分:1)
您可以尝试以下汇总
db.collection.aggregate([
{ "$match": { "theater": "Centuryasia" }},
{ "$unwind": "$movie" },
{ "$group": {
"_id": "$_id",
"theater": { "$first": "$theater" },
"phone": { "$first": "$phone" },
"geometry": { "$first": "$geometry" },
"theaterPhoto": { "$first": "$theaterPhoto" },
"address": { "$first": "$address" },
"theaterCn": { "$first": "$theaterCn" },
"movie": {
"$addToSet": {
"enName": "$movie.enName",
"photoHref": "$movie.photoHref"
}
}
}
}
])