mongodb - 如何使用 $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
?
解决方案
首先,我认为这不是一个好习惯。基本上,您在数据层中包含业务逻辑(“如果没有过滤器,请选择所有内容”)。这不应该在这里完成。
如果即便如此,您也想这样做并且您正在使用聚合,您可能可以使用 $cond ( https://docs.mongodb.com/manual/reference/operator/aggregation/cond/ ) 运算符来完成他的工作. 即使这样,这也不是一个好习惯,因为您必须在两个列表中进行投影,“$something”的完整列表或您返回的过滤列表(使用 $cond 来测试您的列表是否为空)。并使用此投影的返回来过滤掉结果。
我如何能够提供帮助。
推荐阅读
- javascript - 如何在警报弹出窗口中单击“确定”按钮?
- php - Paypal - 订阅 - 创建产品
- android - 如何知道该应用已在 Android Q 中暂停?
- google-drive-api - 无法从 G Suite 市场应用程序获得范围权限
- powershell - 使用 PowerShell 从 Internet 下载文件时出错
- c - Do while 没有按照定义的顺序进行输入,它仅适用于 1 scanf
- javascript - 在 jQuery Ui Timepicker 中设置允许时间
- javascript - 使用 formatter.js 时,React onChange 不会在文本输入上触发
- android - 浏览器中的 HTML5 应用程序能否让 Android 设备保持唤醒状态?
- vue.js - 我可以在 vue.js 中为同一个类添加包含 v-if、v-for、v-bind 吗?