mongodb 如何只找到数组的一部分

林哲圭

我想在下面的数据中得到一个使用“find”函数返回的数组,该数组的内容如下。

{qty:15 warehouse:C},
{qty:20 warehouse:C},
{qty:25 warehouse:C}

我不想要“第一个元素”
我想返回一个 gty 大于 20 的数组。
我该怎么做?

接收mongodb返回的文档
一定要循环直接拉出来吗?
有没有办法通过查询来解决它?


{
    _id: ObjectId('60d0b364737d829c870b7571'),
    item: 'journal',
    instock: [
        {
            warehouse: 'A',
            qty: 5
        },
        {
            warehouse: 'C',
            qty: 15
        },
        {
            warehouse: 'C',
            qty: 20
        },
        {
            warehouse: 'C',
            qty: 25
        }
    ]
}
内纳德·米洛萨夫列维奇

您可以使用聚合管道:

  • $match 匹配您要查询的所有文档
  • $project 选择要返回的字段
  • $filterinstock按某种条件过滤数组
db.collection.aggregate([
  {
    "$match": {
      "_id": "id_1"
    }
  },
  {
    "$project": {
      "item": 1,
      "instock": {
        "$filter": {
          "input": "$instock",
          "cond": {
            "$gt": [
              "$$this.qty",
              20
            ]
          }
        }
      }
    }
  }
])

这是一个工作示例:https : //mongoplayground.net/p/-RPGEriBxui

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章