我有一个MongoDB,我想在一些值上查询数据库,并在条件匹配的地方将它们一起添加。
这是我的Collection条目:
{
"_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并希望在"歌曲列表"
中获取所有(如果有更多)歌曲的nPlaydb.Albums.aggregate([
{$match: {AlbumName: 'Blurryface'}},
{$unwind: '$Songlist'},
])
但是现在我无法了解如何从阵列中的歌曲中获取nPlay以及如何将它们用于其他内容。
如何通过MongoDB聚合获得nPlay?
答案 0 :(得分:1)
你可以使用$ group阶段按照SongList项的id对聚合进行分组,类似于下面的内容:
db.Albums.aggregate([
{$match: {AlbumName: 'Blurryface'}},
{$unwind: '$Songlist'},
{$group: {
_id: '$_id',
nPlays: {$first: '$nPlays'}
}
}
])
这将按Song _id对项目进行分组,这应该会产生一系列单曲及其nPlay。看到 $group