簡體   English   中英

Mongodb聚合如何合並子文檔的這個子文檔?

[英]Mongodb Aggregation How can i merge this subdocument of subdocument?

我想結合這些數據,這兩個數據具有相同的根_id,並且視頻字段具有相同的songs._id值。 最后,我想將具有相同歌曲._id 的視頻數據合並到相同歌曲數據和相同根目錄下的視頻數組,我的意思是,

[
  {
    "_id": ObjectId("5e328f15b7e4937f52c67679"),
    "name": "HoYoung",
    "like": 0,
    "view": 0,
    "songs": {
      "_id": "32f3156c-ed37-40dc-af96-dcbf53a84a58",
      "name": "testName",
      "lyrics": "testLyrics",
      "like": 0,
      "video": {
        "_id": "1255c77b-f3f6-466a-bd1a-0124555e5592",
        "like": 0,
        "view": 0
      }
    }
  },
  {
    "_id": ObjectId("5e328f15b7e4937f52c67679"),
    "name": "HoYoung",        
    "like": 0,
    "view": 0,        
    "songs": {
      "_id": "32f3156c-ed37-40dc-af96-dcbf53a84a58",
      "lyrics": "testLyrics",
      "like": 0,
      "name": "testName",
      "video": {
        "_id": "f08a433a-e120-459f-8bf1-1f55081dbf82",
        "like": 0,
        "view": 0
      }
    }
  }
]

   {
        "_id" : ObjectId("5e328f15b7e4937f52c67679"),
        "name" : "HoYoung",
        "like" : 0
        "songs" : {
            "_id" : "32f3156c-ed37-40dc-af96-dcbf53a84a58",
            "name" : "testName",
            "lyrics" : "testLyrics",
            "like" : 0,
            "view" : 0,
            "video" : [{
                "_id" : "1255c77b-f3f6-466a-bd1a-0124555e5592",
                "like" : 0,
                "view" : 0
            },{
                "_id" : "f08a433a-e120-459f-8bf1-1f55081dbf82",
                "like" : 0,
                "view" : 0
            }]
        }
    }

我怎樣才能做到這一點? 團體? 問題是我不能對子文檔的子文檔進行分組

您需要按songs._id $group songs._id (和您上下文中的根_id )並在時間video數組中累積video子文檔(我們存儲在root頂級文檔中以在下一階段合並)。

db.collection.aggregate([
  {
    $group: {
      _id: "$songs._id",
      root: {
        $first: "$$ROOT"
      },
      video: {
        $push: "$songs.video"
      }
    }
  },
  {
    $project: {
      name: "$root.name",
      like: "$root.like",
      songs: {
        _id: "$root.songs._id",
        name: "$root.songs.name",
        lyrics: "$root.songs.lyrics",
        like: "$root.songs.like",
        view: "$root.songs.view",
        video: "$video"
      }
    }
  }
])

蒙戈游樂場

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM