无法根据条件查找子文档计数

问题描述 投票:0回答:1

我有一个架构,其中有一些字段..我无法找到这个查询,我尝试$ group但无法找到结果 收集:任务

{
    "_id" : ObjectId("5a475ee4b342fa03e71192bd"),
    "title" : "Some Title",
    "assignedUsers" : [
        {
            "_id" : ObjectId("5a47386ee4788102e530f60d"),
            "name" : "Sam",
            "status" : "Unconfirmed"
        },
        {
            "_id" : ObjectId("5a473878e4788102e530f60f"),
            "name" : "Ricky",
            "status" : "Rejected"
        }
        {
            "_id" : ObjectId("5a47388be4788102e530f611"),
            "name" : "Niel",
            "status" : "Unconfirmed"
        },
        {
            "_id" : ObjectId("5a47388be4788102e530f611"),
            "name" : "ABC",
            "status" : "Unconfirmed"
        },
        {
            "_id" : ObjectId("5a473892e4788102e530f612"),
            "name" : "Rocky",
            "status" : "Rejected"
        }
    ]
}

结果应包含Unconfirmed = 3 Rejected = 2

谢谢

node.js mongodb mongoose
1个回答
1
投票

使用以下查询,

db.coll3.aggregate([{
            $unwind: '$assignedUsers'
        }, {
            $group: {
                _id: '$assignedUsers.status',
                'count': {
                    $sum: 1
                }
            }
        }
    ])

如果要查询特定文档,请确保使用$ match作为第一阶段,然后使用另外2 $ unwind和$ group。你会得到结果

{ "_id" : "Rejected", "count" : 2 }
{ "_id" : "Unconfirmed", "count" : 3 }

希望这可以帮助。

© www.soinside.com 2019 - 2024. All rights reserved.