Mongodb 获取mongoose数组中子文档值的计数

Mongodb 获取mongoose数组中子文档值的计数,mongodb,mongoose,Mongodb,Mongoose,我收集了身份证和联系人的文件。Contact是包含子文档的数组 我正在尝试获取isActive=Y的联系人计数。还需要根据id查询集合。整个查询可以是 选择计数(contact.isActive=Y),其中_id='601ad0227b25254647823713' 我第一次使用mongo和mongoose。如果我无法正确解释,请编辑该问题。您可以使用如下聚合管道: 首先$match仅获取具有所需\u id的文档 然后$unwind在数组中获取不同的值 再次匹配以获得isActive值为Y的

我收集了身份证和联系人的文件。Contact是包含子文档的数组

我正在尝试获取isActive=Y的联系人计数。还需要根据id查询集合。整个查询可以是

选择计数(contact.isActive=Y),其中_id='601ad0227b25254647823713'


我第一次使用mongo和mongoose。如果我无法正确解释,请编辑该问题。

您可以使用如下聚合管道:

  • 首先
    $match
    仅获取具有所需
    \u 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}
    }
  }
])