MongoDB查询$在操作符由多个键的对象在一个数组?



我试图在MongoDB中使用$匹配查询,操作符如下:-

集合中的文档应该具有如下类似的数据:-

[
{
"test": "test01",
"output": 0
},
{
"test": "test02",
"output": 5
},
{
"test": "test03",
"output": 1
}
]

我尝试通过以下方式使用此聚合:-

await SampleCollection.aggregate(
[
{
$match: {
// here it should look for test and output key
test_and_output: { $in: [{ test: 'test01', output: 0 }, { test: 'test03', output: 1 }] },
},
},
],
async function (err, data) {
if (err) return reject(err);
if (!data || !data.length) return resolve(null);
if (data.length) return resolve(data);
}
);

正如你在上面看到的,我试图使用$in操作符来查找2个键,即(test, output),你知道怎么做吗?

注意:它应该同时满足两个条件,两个键必须等于$in操作符中的对象,所以我认为$或operator不起作用。

提供的匹配阶段正在查找包含名为test_and_output的字段的文档,因为示例文档都没有这样的字段,因此没有任何匹配。

如果需要同时匹配多个条件,请使用顶级$or和过滤器数组,如:

{$match:{
$or: [
{ test: 'test01', output: 0 }, 
{ test: 'test03', output: 1 }
]
}}

游乐场

如果示例数据是来自单个文档的数组,例如:

{
test_and_order: [
{
"test": "test01",
"output": 0
},
{
"test": "test02",
"output": 5
},
{
"test": "test03",
"output": 1
}
]
}

你可以像这样使用$elemMatch:

$match: {
test_and_output: {$elemMatch: {
$or: [
{test: "test01", output: 0},
{test: "test03", output: 1}
]
}}
}

游乐场

相关内容

  • 没有找到相关文章

最新更新