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。可能的重复。您能解释一下引用在关联数组的情况下是如何工作的吗??