![](/img/trans.png)
[英]How to access nested array of objects in mongodb aggregation pipeline?
[英]MongoDB aggregation query on nested Json array objects
我有一個MongoDB,我想查詢一些值的數據庫,並將它們添加到條件匹配的地方。
這是我的收藏條目:
{
"_id" : ObjectId("5875ed1dc939408da0601f31"),
"AlbumName" : "Blurryface",
"Group" : "21 Pilots",
"Date" : "20151110",
"Label" : "Fueled By Ramen",
"Writers" : "Tyler Joseph",
"Producer" : "Mike Elizondo",
"Songlist" : [
{
"_id" : ObjectId("5875e5e8c939408da0601d73"),
"SongID" : "1",
"SongName" : "Stressed Out",
"Artist" : "21 Pilots",
"Duration:" : "200",
"nPlays" : "800000000",
"SongDataFile" : "data"
}
]
}
我匹配AlbumName,並希望獲取“歌曲列表”中所有(如果有更多歌曲)的nPlay
db.Albums.aggregate([
{$match: {AlbumName: 'Blurryface'}},
{$unwind: '$Songlist'},
])
但是現在我不知道如何從數組中的歌曲中獲取nPlay,以及如何將它們用於其他用途。
如何通過MongoDB聚合獲取nPlay?
您可以使用$ group階段按SongList項目的ID對匯總進行分組,如下所示:
db.Albums.aggregate([
{$match: {AlbumName: 'Blurryface'}},
{$unwind: '$Songlist'},
{$group: {
_id: '$_id',
nPlays: {$first: '$nPlays'}
}
}
])
這將按照Song _id對項目進行分組,這將導致單個歌曲及其nPlay的數組。 查看$ group
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.