[英]MongoDB find documents using an array of objects as search argument
有没有办法使用对象数组搜索 mongodb 数据库作为搜索 arguments?
假设我有以下搜索偏好:
preferences = [{
product: "PRODUCT_A",
minqty: 5,
maxqty: 50
},
{
product: "PRODUCT_B",
minqty: 100,
maxqty: 500
}
]
在我的数据库中,我的 Jobs 具有以下结构:
{
jobName: "job name",
items: [{
product: "PRODUCT_A"
qty: 25
},
{
product: "PRODUCT_F"
qty: 300
}
]
}
我想使用首选项查询数据库并返回任何匹配至少一个条件的.
我设法使用我所有的偏好作为过滤器,但$match
是累积的,它的编写方式就像 javascript 中的&&
一样。 我的目标是“匹配这个||
匹配那个”。
let pipeline = [];
preferences.map((item) => {
let search = {
product: item.product,
quantity: { $gte: item.minqty, $lte: item.maxqty },
};
return pipeline.push({
$match: {
items: {
$elemMatch: search,
},
},
});
});
const jobs = await Job.aggregate(pipeline);
let search = [];
preferences.map((item, index) => {
let arguments = {
product: item.product,
quantity: { $gte: item.minqty, $lte: item.maxqty },
};
search.push(arguments);
});
let pipeline = [
{
$match: {
items: {
$elemMatch: {
$or: search,
},
},
},
},
];
const jobs = await Job.aggregate(pipeline);
使用聚合
$Unwind
非规范化项目$or
的简单match
$lte
和$gte
并通过您的这些尝试更新问题或发布新问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.