Arrays MongoDB对文档数组的查询

Arrays MongoDB对文档数组的查询,arrays,mongodb,Arrays,Mongodb,我在数据库中有以下数据 { item: "journal", instock: [ { warehouse: "A", qty: 5 }, { warehouse: "C", qty: 15 } ] }, { item: "notebook", instock: [ { warehouse: "C", qty: 5 } ] }, { item: "paper", instock: [ { warehouse: "A", qty: 60 }, { warehouse: "B", qty

我在数据库中有以下数据

  { item: "journal", instock: [ { warehouse: "A", qty: 5 }, { warehouse: "C", qty: 15 } ] },
  { item: "notebook", instock: [ { warehouse: "C", qty: 5 } ] },
  { item: "paper", instock: [ { warehouse: "A", qty: 60 }, { warehouse: "B", qty: 15 } ] },
  { item: "planner", instock: [ { warehouse: "A", qty: 40 }, { warehouse: "B", qty: 5 } ] },
  { item: "postcard", instock: [ { warehouse: "B", qty: 15 }, { warehouse: "C", qty: 35 } ] }
我要找出仓库里有什么东西

  • 15
    纸张数量
  • 35
    明信片的数量

试试这段代码可能会对你有所帮助

db.getCollection('warehouses').aggregate([
  {
    $unwind: "$instock"
  },
  {
    $match: {
      $or: [
        {
          $and: [{ 'item': 'paper' }, { 'instock.qty': { $eq: 15 } }]
        },
        {
          $and: [{ 'item': 'postcard' }, { 'instock.qty': { $eq: 35 } }]
        }
      ]
    }
  }
])

尝试使用此查找查询

db.warehouse.find(
   {
      $or: [
         {
            item: "paper",
            instock: { $elemMatch: { qty: 15 } }
         },
         {
            item: "postcard",
            instock: { $elemMatch: { qty: 35 } }
         }
      ]
   }
)