I have my asset documents in the below format.
db.asset.find({}).limit(1).pretty()
{
"_id" : ObjectId("54e650a10364a65f62c0df4a"),
"_class" : "com.model.core.Asset",
"displayName" : "Bingo Rhymes For Children + More 3D Animation Nursery Rhymes & Kids' Songs",
"assetType" : "VIDEO",
"active" : true,
"originalUrl" : "https://www.youtube.com/watch?v=j-tdVvvXn9k&feature=youtube_gdata",
"groupIds" : [ ],
"folderIds" : [
"54e6507b0364a65f62c0df47",
"54e6507b0364a65f62c0df48"
]
}
As you can see each asset can have a collection of folderId to which it is associated with. If I want to find the folderIds along with the associated assets how does the mongo aggregate query will look like? Essentially I want to group the assets by folderId.
You first need to unwind by the folderIds
field, than group by _id
and push the asset _id
into a list assets_id
.
db.asset.aggregate([{$unwind:"$folderIds"}, {$group:{_id: "$folderIds",assets:{$push: {assets_id:"$_id"}}}}])
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With