mongo查询多个条件

Raj*_*eev 6 mongodb mongodb-query

我有数据,

var data = [{name: 'n1', age: 22}, {name: 'n1', age: age: 11}, {name: 'n2', age: age: 16}, {name: 'n3', age: 22}];
Run Code Online (Sandbox Code Playgroud)

我想根据我的多种条件获取数据:

条件1: - var query = {name: 'n1', age: 22};

条件2: - var query = {name = '', age: 22}

单个查询我想要的是什么:

如果我运行条件1,那么结果应该是

[{name: 'n1', age: 22}].
Run Code Online (Sandbox Code Playgroud)

如果我运行条件2,那么结果应该是

[{name: 'n1', age: 22}, {name: 'n3', age: 22} ].
Run Code Online (Sandbox Code Playgroud)

对于第二个条件的手段,查询应该只搜索年龄字段.

这就是我想在一个查询中实现的全部内容.

我这样做:

$query:{$and: [{name: query.name}, {age: query.age}]}
Run Code Online (Sandbox Code Playgroud)

它适用于第一个条件但不适用于第二个条件.如何在一个查询中实现它?

tar*_*mes 6

对其进行编码,以便只有您感兴趣的字段位于查询中:

let criteria = [];

if (query.name && query.name.length > 0) {
   criteria.push({ name: query.name });
}

if (query.age && query.age > 0) {
   criteria.push({ age: query.age });
}

criteria = criteria.length > 0 ? { $and: criteria } : {};
Run Code Online (Sandbox Code Playgroud)

现在,您可以将条件传递给查询.