[英]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.