mongodb - Mongo 聚合排除空字段
问题描述
我有一个$first
在多个字段上执行的聚合管道。
但是,在某些情况下,这些字段不存在。在这些情况下,该字段的值返回为null
. 我需要一种方法来排除这些字段。
我尝试$ifNull
在$project
舞台上使用,但它将字段的值设置为false
而不是排除它们。
小组赛阶段:
{
_id: null,
thisExists: {
$first: "$thisExists"
},
thisDoesNotExist: {
$first: "$thisDoesNotExist"
}
}
结果:
{
_id:null,
thisExists:"I exist",
thisDoesNotExist:null
}
解决方案
弄清楚了。
在$project
阶段,$ifNull
应该返回"$false"
而不是false
{
thisExists: { $ifNull : ["$thisExists","$false"]},
thisDoesNotExist : {$ifNull : ["$thisDoesNotExist","$false"]}
}
这将删除为空的字段。
如果有人有更好更简单的答案,那就太好了。$project
即使它是动态的,我也不想放入这么多字段。
推荐阅读
- android - 用户选择时将应用程序降级到较低的 versionCode
- vue.js - 增加 v-data-table Vuetify 中标题的字体大小
- c - 从任何基数转换为小数和区分大小写
- c# - PDFium,pdf中提取的图像损坏但渲染时没有问题
- javascript - javascript 代码不返回任何内容(nan/emptystring/no 问题)有什么问题?
- python - 如何使用 tweepy python 模块仅流式传输 LIST 时间线的状态?
- javascript - 如何从其他 json 文件内部加载 json 文件?
- google-cloud-http-load-balancer - GCP 后端服务更新
- javascript - Jest 不能使用 ES6 导入语法和别名解析器
- apache-spark - 如何在 S3 上的 parquet 文件系统中压缩流生成的 parquet