我在mongo中使用$in
进行查询,写点赞
var array = returnArrayFromMe() // this will return an array ['a', 'b']
然后
//Stuff
$in: ['$something', array],
但是有时候,returnArrayFromMe
返回[]
。
我想要的是,如果array = []
,我的查询将返回所有数据。
我该如何使用$in
来做到这一点?
我知道我们可以使用if else
来做到这一点
但是,如果没有array = []
的{{1}}还能得到全部吗?
答案 0 :(得分:0)
首先,我认为这不是一个好习惯。基本上,您将在数据层中包含业务逻辑(“如果没有过滤器,则选择所有内容”)。这不应该在这里完成。
即使这样,您仍希望以这种方式进行操作,并且正在使用聚合,则可以使用$ cond(https://docs.mongodb.com/manual/reference/operator/aggregation/cond/)运算符来完成操作。即使这样,也不是一个好习惯,因为您必须在两个列表中投影,即“ $ something”的完整列表或您返回的已过滤列表(使用$ cond来测试您的列表是否为空)。并使用此投影的收益过滤出结果。
我如何能提供帮助。