我想避免在查询数据库之前编写条件语句来检查参数 所以我不必多次写相似的查询,但我必须写一个单一的查询。
所以我的第一个查询是
db.results.find( { travel_class : "first" } })
并返回多个文档
我的第二个问题是
var travel_class_filter = "all";
db.results.find( {'$and' : [ { travel_class_filter : "all"} , { travel_class : "first" } ]})
并返回0个文档,而不是第二个查询的相同数量的文档
你知道为什么吗?
答案 0 :(得分:1)
您无法在查询中测试参数,但可以通过以编程方式构建查询对象来执行此操作:
var query = {};
if (travel_class_filter != 'all') {
query.travel_class = travel_class_filter;
}
db.results.find(query);