これが私のデータ構造です:
{
"_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
このコードのような1つのドキュメントで重複データを削除するために使用します:
db.getCollection('TaipeiEast').aggregate([
{ "$match": {
"theater": "TodayTainan"
}
},
{ "$unwind": '$movie' },
{ "$group": {
"_id": "$_id",
"movie": {
"$addToSet": {
"cnName": "$movie.cnName",
"photoHref": "$movie.photoHref"
}
}
}
}
])
1つのコレクションに多数のドキュメントがあるので、それらをクエリして、重複するムービーのない1つのムービー配列にします。
私はmatch
このように削除しようとします:
db.getCollection('TaipeiEast').aggregate([
{ "$unwind": '$movie' },
{ "$group": {
"_id": "$_id",
"movie": {
"$addToSet": {
"cnName": "$movie.cnName",
"photoHref": "$movie.photoHref"
}
}
}
}
])
すべてのドキュメントデータを取得できますが、ムービー配列は各ドキュメントから独立しています。
複数のドキュメントから1つのムービー配列を生成する方法を知っている人はいますか?前もって感謝します。
試してみてください$group
とnull
。したがって、各ドキュメントに依存することなく、すべての映画を配列で取得できます
{ "$group": {
"_id": null,
"movie": {
"$addToSet": {
"cnName": "$movie.cnName",
"photoHref": "$movie.photoHref"
}
}
}
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加