【问题标题】:How do i only get matching object from nested array in mongodb using find or aggregate?我如何使用查找或聚合仅从 mongodb 中的嵌套数组中获取匹配对象?
【发布时间】:2023-02-14 00:58:33
【问题描述】:

我的模型 有这个领域:

canReview: [
    {
        status: {
            type: Boolean
        ,
    }
]

记录是:

[
    {
      _id: 1,
      name: "aaaa",
      canReview: [
        {
          status: true
        },
        {
          status: false
        },
        {
          status: false
        }
      ]
    },
    {
      _id: 2,
      name: "abbb",
      canReview: [
        {
          status: false
        },
        {
          status: false
        },
        {
          status: false
        }
      ]
    }
  ]

我想要的结果也只是来自嵌套数组的状态真实记录 我查询像:

{canReview.status : true}

结果 :

[
  {
    "_id": 1,
    "canReview": [
      {
        "status": true
      },
      {
        "status": false
      },
      {
        "status": false
      }
    ],
    "name": "aaaa"
  }
]

嵌套数组只包含那些状态为真的记录。

【问题讨论】:

    标签: node.js mongodb mongodb-query


    【解决方案1】:

    使用$anyElementTrue

    db.collection.find({
      $expr: {
        "$anyElementTrue": "$canReview.status"
      }
    })
    

    Mongo Playground

    【讨论】:

      猜你喜欢
      • 2020-01-24
      • 2021-05-23
      • 1970-01-01
      • 2018-09-10
      • 2021-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多