簡體   English   中英

對嵌套Json數組對象的MongoDB聚合查詢

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM