mongodb - 如果聚合内的 mongodb 匹配不返回任何内容,如何进行新查询?
问题描述
我使用 match 从集合中选择一些文档,然后输出除找到的文档之外的所有其他文档。如果 match 没有找到任何文档,那么我需要显示集合中的所有可用文档。如何才能做到这一点?
解决方案
如果没有示例,我不知道我是否理解正确,但是您可以尝试此聚合查询(或将此聚合阶段添加到您的查询中)。
ide 使用$facet创建两种方式:
- 第一种方式:匹配值
- 第二种方式:获取一切
并使用和$project
输出这些选项之一。
如果以“存在方式”返回的数组为 0(任何结果),则为(即所有值),否则为值。$cond
$size
$project
result
no_exists
exists
db.collection.aggregate([
{
"$facet": {
"exists": [
{
"$match": {
// your match
}
}
],
"no_exists": []
}
},
{
"$project": {
"result": {
"$cond": {
"if": {
"$eq": [
{
"$size": "$exists"
},
0
]
},
"then": "$no_exists",
"else": "$exists"
}
}
}
}
])
推荐阅读
- python - Dsicord.py:找不到命令
- select - 剑道编辑器文本点击(选择事件)
- machine-learning - 我应该如何使用 julia 训练 SVM?
- networking - 一台设备可以有多个 MAC 地址吗?
- wpf - 将双击命令添加到 wpf-treeview-items
- performance - 性能问题:使用 Gunicorn + Tornado 的异步 gRPC
- android - 我怎样才能膨胀 ArrayList
> 对 RecyclerView 的价值 - highcharts - Highcharts点击功能更新系列并取消之前的更新
- javascript - 如何使按钮在网页上显示表单
- scala - 无法从 hdp 3 中超过 25 列的 spark 数据帧加载配置单元表