我收集了带有 ID 和联系人的文档。 Contact 是一个包含子文档的数组。
我正在尝试获取 isActive = Y 的联系计数。还需要根据 id 查询集合。整个查询可能类似于
选择 Count(contact.isActive=Y) where _id = '601ad0227b25254647823713'
我第一次使用 mongo 和 mongoose。如果我无法正确解释,请编辑问题。
答案 0 :(得分:1)
您可以使用这样的聚合管道:
$match
仅获取具有所需 _id
的文档。$unwind
获取数组中的不同值。isActive
值为 Y
的值。$group
为每个存在的文档添加一个(即计算 isActive
= Y 的文档)。计数是存储在字段 total
中。db.collection.aggregate([
{
"$match": {"id": 1}
},
{
"$unwind": "$contact"
},
{
"$match": {"contact.isActive": "Y"}
},
{
"$group": {
"_id": "$id",
"total": {"$sum": 1}
}
}
])
示例here