MongoDB - (NodeJS) - 基于两个字段的find()。如果NEITHER为空,则从两个字段中查找,如果另一个为空,则只查找一个

时间:2016-07-17 02:46:57

标签: node.js mongodb find

可以解释一下我如何避免这个

MongoDB - find() - imgur链接

MongoDB - (NodeJS) - 基于两个字段的find()。如果NEITHER为空,则从两个字段中查找,如果另一个为空,则只查找一个。

我查看了MongoDB的documentation。我发现的最好的事情就是:

$and : [
        { $or : [ { price : 0.99 }, { price : 1.99 } ] },
        { $or : [ { sale : true }, { qty : { $lt : 20 } } ] }
    ]

哪个对我没有帮助。

1 个答案:

答案 0 :(得分:1)

动态构建查询对象:

var query = {};
if (searchParameters.specialty !== '') {
  query.program = searchParameters.specialty;
}
if (searchParameters.state !== '') {
  query.state = searchParameters.state;
}
Model.find(query, ...);

(您可能还需要确保至少有一个不为空,否则查询将匹配所有文档)