Я использую mongoDb с пружинной загрузкой. Я реализовал отношения один ко многим. Я храню видео в одной коллекции и сохраняю _id в категории , которая является встроенным объектом в коллекции reel .
Коллекция барабанов
{
_id:"reelId",
category:[
{
_id:"catId_1",
videos:[
{
_id:"video_1",
student: 40
},
{
_id:"video_2",
student: 30
}
]
},
// second catgeory object
]
}
Видео коллекция
{
_id"video_1",
title:"first",
description:"des 1",
isGlobal: true
},
{
_id"video_2",
title:"second",
description:"des 2",
isGlobal: false
}
Ожидаемый результат.
{
_id:"reelId",
category:[
{
_id:"catId_1",
videos:[
{
_id:"video_1",
title:"first",
description:"des 1",
isGlobal: true
student: 40
},
{
_id:"video_2",
title:"second",
description:"des 2",
isGlobal: false
student: 30
}
]
},
// second catgeory object
]
}
Я написал скрипт mon go, который работает отлично, как я ожидал.
db.getCollection('reel').aggregate([
{ $unwind:{path:"$category"} },
{ $unwind:{path:"$category.videos"} },
{ $lookup :{ from:"video", localField:"category.videos._id", foreignField:"_id", as:"data"} },
{ $unwind:{path:"$data", preserveNullAndEmptyArrays: true } },
{ $addFields: { "category.videos.title":"$data.title","category.videos.description":"$data.description" }},
{ $group: { _id:{_id:"$_id", category:"$category._id"}, videos:{$push:"$category.videos"} } },
{ $group: { _id:"$_id._id", category:{ $push: { _id:"$_id.category", videos: "$videos"} } } }
])
Но так как я новичок в mon go, я не мог понять как сопоставить этот скрипт с java. Я пытался во многих отношениях, но не повезло. Заранее спасибо