首页 > 解决方案 > 如何使用 $in 获取 mongo 中的所有数据?

问题描述

我在 mongo 中使用$in我的查询,我写了一些喜欢的东西

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

接着

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

但有时,returnArrayFromMe返回[]。我想要的是,如果array = [],我的查询将返回所有数据。我该怎么做$in?我知道我们可以用一个if else 但是,如果array = []没有的话,有没有办法得到所有if else

标签: mongodbaggregation-framework

解决方案


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

如果即便如此,您也想这样做并且您正在使用聚合,您可能可以使用 $cond ( https://docs.mongodb.com/manual/reference/operator/aggregation/cond/ ) 运算符来完成他的工作. 即使这样,这也不是一个好习惯,因为您必须在两个列表中进行投影,“$something”的完整列表或您返回的过滤列表(使用 $cond 来测试您的列表是否为空)。并使用此投影的返回来过滤掉结果。

我如何能够提供帮助。


推荐阅读