我尝试使用$in操作符$match查询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个关键字是(测试,输出),任何想法如何?
注意:-它应该同时满足2个条件,2个键必须等于$中的对象,所以我认为$或运算符不起作用。
1条答案
按热度按时间gojuced71#
提供的匹配阶段查找包含名为
test_and_output
的字段的文档,因为没有一个示例文档包含这样的字段,所以没有匹配。如果您需要同时匹配多个条件,请使用带有过滤器数组的顶级
$or
,如下所示:Playground
如果示例数据是来自单个文档数组,如:
您可以像这样使用
$elemMatch
:Playground