如何使用$ in获取mongo中的所有数据?

时间:2019-06-04 11:56:06

标签: mongodb aggregation-framework

我在mongo中使用$in进行查询,写点赞

var array = returnArrayFromMe() // this will return an array ['a', 'b']

然后

//Stuff
$in: ['$something', array],

但是有时候,returnArrayFromMe返回[]。 我想要的是,如果array = [],我的查询将返回所有数据。 我该如何使用$in来做到这一点? 我知道我们可以使用if else来做到这一点 但是,如果没有array = []的{​​{1}}还能得到全部吗?

1 个答案:

答案 0 :(得分:0)

首先,我认为这不是一个好习惯。基本上,您将在数据层中包含业务逻辑(“如果没有过滤器,则选择所有内容”)。这不应该在这里完成。

即使这样,您仍希望以这种方式进行操作,并且正在使用聚合,则可以使用$ cond(https://docs.mongodb.com/manual/reference/operator/aggregation/cond/)运算符来完成操作。即使这样,也不是一个好习惯,因为您必须在两个列表中投影,即“ $ something”的完整列表或您返回的已过滤列表(使用$ cond来测试您的列表是否为空)。并使用此投影的收益过滤出结果。

我如何能提供帮助。