我在数据库中有以下数据
{ 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
质量paper
35
qty of postcard
发布于 2020-02-24 12:26:41
尝试使用此查找查询。
db.warehouse.find(
{
$or: [
{
item: "paper",
instock: { $elemMatch: { qty: 15 } }
},
{
item: "postcard",
instock: { $elemMatch: { qty: 35 } }
}
]
}
)
发布于 2020-02-24 11:47:58
试试这段代码可能会对你有帮助。
db.getCollection('warehouses').aggregate([
{
$unwind: "$instock"
},
{
$match: {
$or: [
{
$and: [{ 'item': 'paper' }, { 'instock.qty': { $eq: 15 } }]
},
{
$and: [{ 'item': 'postcard' }, { 'instock.qty': { $eq: 35 } }]
}
]
}
}
])
https://stackoverflow.com/questions/60374596
复制相似问题