mongoose Mongo查询查找数组元素包含两个特定值的文档

hts6caw3  于 11个月前  发布在  Go
关注(0)|答案(1)|浏览(144)

尝试创建一个Mongo查询,使用Mongoose为我的Node.js项目。
我的数据看起来类似于下面提供的示例。
需要帮助创建查询以查找包含warehouse = Aqty greater than 10warehouse = B的文档。无论instock数组中是否存在其他元素。

[
  {
    item: 'journal',
    instock: [
      { warehouse: 'A', qty: 5 },
      { warehouse: 'C', qty: 15 }
    ]
  },
  {
    item: 'planner',
    instock: [
      { warehouse: 'A', qty: 1 },
      { warehouse: 'B', qty: 5 }
    ]
  },
  {
    item: 'planner',
    instock: [
      { warehouse: 'A', qty: 40 },
      { warehouse: 'B', qty: 5 }
    ]
  },
  {
    item: 'postcard',
    in stock: [
      { warehouse: 'A', qty: 15 },
      { warehouse: 'B', qty: 15 },
      { warehouse: 'C', qty: 35 }
    ]
  }
]

字符串

预期结果。

[{
    item: 'planner',
    instock: [
      { warehouse: 'A', qty: 40 },
      { warehouse: 'B', qty: 5 }
    ]
  },
  {
    item: 'postcard',
    instock: [
      { warehouse: 'A', qty: 15 },
      { warehouse: 'B', qty: 15 },
      { warehouse: 'C', qty: 35 }
    ]
  }]

bjg7j2ky

bjg7j2ky1#

db.collection.find({
  $and: [
    {
      instock: {
        "$elemMatch": {
          warehouse: "A",
          qty: {$gt: 10},
        }
      }
    },
    {
      instock: {
        "$elemMatch": {
          warehouse: "B"
        }
      }
    },
  ]
})

字符串
此查询将查找具有a且数量> 10的元素和没有进行数量检查的B元素

相关问题