Mongo DB搜索基于多个条件

时间:2016-02-29 17:14:33

标签: mongodb meteor

我正在尝试根据多种条件进行搜索,但问题是这样做并不像这样。

假设我有一个像

这样的搜索查询

Orders.find({$or: {"status":{"$in":["open", "closed"]},"paymentStatus":{"$in":["unpaid"]}}} )

并且我添加了另一个过滤器参数,例如approvalStatus它不会留下以前找到的项目,而是将查询视为AND,如果其中一个查询确实会返回一个空的项集合不匹配。

如何编写一个查询,无论传递给它的是什么,即使其中一个条件中没有记录,它也会保留以前找到的项目。

像sql中的简单OR查询

我希望我能够解释得这么好

1 个答案:

答案 0 :(得分:2)

这里使用$or是正确的方法,但它的值必须是查询表达式的数组,而不是对象。

所以你的查询看起来应该是这样的:

Orders.find({$or: [
    {"status": {"$in": ["open", "closed"]}},
    {"paymentStatus": {"$in": ["unpaid"]}},
    {"approvalStatus": {"$in": ["approved"]}}
]})