Node.js 如何在mongoose中获取文档数组中匹配条件的对象总数

Node.js 如何在mongoose中获取文档数组中匹配条件的对象总数,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我有数据,需要获取设备分配给工作的批次数。我的数据样本的格式如下 "_id" : ObjectId("5968c6aa5a44c946bc13d184"), "listType" : "OPEN", "resourceAssigned" : [ { "deviceId" : "59522e01e67d9f1adcd7a158", "capacity" : "2", "lot" : NumberInt(1) }

我有数据,需要获取设备分配给工作的批次数。我的数据样本的格式如下

    "_id" : ObjectId("5968c6aa5a44c946bc13d184"), 
    "listType" : "OPEN", 
"resourceAssigned" : [
    {
        "deviceId" : "59522e01e67d9f1adcd7a158", 
        "capacity" : "2", 
        "lot" : NumberInt(1)
    }, 
    {
        "deviceId" : "59522e01e67d9f1adcd7a158", 
        "capacity" : "7", 
        "lot" : NumberInt(2)
    }, 
    {
        "deviceId" : "59522e01e67d9f1adcd7a158", 
        "capacity" : "5", 
        "lot" : NumberInt(3)
    },
            {
        "deviceId" : "59522e01e67d9f1adcd7a151", 
        "capacity" : "6", 
        "lot" : NumberInt(1)
    }, 
    {
        "deviceId" : "59522e01e67d9f1adcd7a151", 
        "capacity" : "3", 
        "lot" : NumberInt(2)
    }
], 
"materialHandlingUnit" : [

], 
"__v" : NumberInt(0)
如果我需要搜索并获取deviceId键的计数,那么它应该返回我它在resourceAssigned数组中的次数计数。什么查询可以帮助我解决这个问题

我方试建查询为:

            var pickListId = req.body.pickListId;
        var deviceId = req.body.deviceId;

        var pipeline = [
            {"$match": {"resourceAssigned.deviceId": deviceId}},
            {"$unwind": "$resourceAssigned"},
            {"$match": {"resourceAssigned.deviceId": deviceId}},
            {
                "$group": {
                    "_id": '$_id',
                    "numberOfEntries": {"$sum": 1}
                }
            }
        ];

        pickListModel.aggregate(pipeline, function (err, pickAggregateRecord) {

            if (err) {

                res.json({message: 'INTERNAL SERVER ERROR, UNKNOWN SERVER ERROR HAS OCCURRED!!!!!', status: 'error', statusCode: '500'});
            } else {

                res.json(pickAggregateRecord);
            }
        });

上面的查询可以工作,但它没有根据指定的“\u id”进行查找的条件。我想要的查询应该像findOne一样工作,而不是find。

可能的重复。您能解释一下引用在关联数组的情况下是如何工作的吗??