以下是我的数据结构:
{
"_id" : ObjectId("5becc8e2e9427e48d0edab83"),
"theater" : "TodayTainan",
"geometry" : {
"type" : "Point",
"coordinates" : [
120.196866,
22.99322
]
},
"movie" : [
{
"movieDate" : "䏿 æ¥æï¼2018-07-25",
"videoId" : [
"17Y_lXjB3VI",
"ovbEe1-qUZ0"
],
"imdbScore" : "",
"cnName" : "ä¸å¯è½çä»»åï¼å
¨é¢ç¦è§£",
"photoHref" : "https://movies.yahoo.com.tw/x/r/w420/i/o/production/movies/June2018/8LBd1GYiRhtjZMCcdOSl-1019x1500.JPG",
"rottenScore" : "",
"releasedTime" : [
ISODate("2018-11-15T12:40:00.000Z"),
ISODate("2018-11-15T17:20:00.000Z"),
ISODate("2018-11-15T22:00:00.000Z")
],
"enName" : "Mission: Impossible Fall Out",
"goodMinePoint" : 0.75
},
{
"movieDate" : "䏿 æ¥æï¼2018-08-10",
"videoId" : [
"j-FAn2jGI08",
"6aWIWGBWlPk"
],
"imdbScore" : "5.9",
"cnName" : "å·¨é½é¯",
"photoHref" : "https://movies.yahoo.com.tw/x/r/w420/i/o/production/movies/July2018/xO7qzzEwPCaipjCWkkxg-2714x3878.jpg",
"rottenScore" : "45%",
"releasedTime" : [
ISODate("2018-11-15T15:20:00.000Z"),
ISODate("2018-11-15T20:00:00.000Z")
],
"enName" : "The Meg",
"goodMinePoint" : 0.3
}
],
"phone" : "06-2205151"
}
我用
addToSet
要使用以下代码这样的文档删除重复数据,请执行以下操作:
db.getCollection('TaipeiEast').aggregate([
{ "$match": {
"theater": "TodayTainan"
}
},
{ "$unwind": '$movie' },
{ "$group": {
"_id": "$_id",
"movie": {
"$addToSet": {
"cnName": "$movie.cnName",
"photoHref": "$movie.photoHref"
}
}
}
}
])
现在我在一个集合中有很多文档,我想把它们查询成一个没有重复电影的电影数组。
我试着移除
match
这样地:
db.getCollection('TaipeiEast').aggregate([
{ "$unwind": '$movie' },
{ "$group": {
"_id": "$_id",
"movie": {
"$addToSet": {
"cnName": "$movie.cnName",
"photoHref": "$movie.photoHref"
}
}
}
}
])
我可以得到所有的文档数据,但是电影数组与每个文档是独立的。
有人知道如何从多个文档生成一个电影数组吗?提前谢谢。