Dus*_*gal 3 mongodb aggregation-framework
我有一个在多个字段上执行的聚合管道$first。
但是,在某些情况下,这些字段不存在。在这些情况下,字段的值返回为null。我需要一种方法来排除这些字段。
$ifNull我尝试在舞台中使用$project,但它将字段的值设置为false而不是排除它们。
小组赛阶段:
{
_id: null,
thisExists: {
$first: "$thisExists"
},
thisDoesNotExist: {
$first: "$thisDoesNotExist"
}
}
Run Code Online (Sandbox Code Playgroud)
结果:
{
_id:null,
thisExists:"I exist",
thisDoesNotExist:null
}
Run Code Online (Sandbox Code Playgroud)
弄清楚了。
在$project阶段中,$ifNull应该返回"$false"而不是false
{
thisExists: { $ifNull : ["$thisExists","$false"]},
thisDoesNotExist : {$ifNull : ["$thisDoesNotExist","$false"]}
}
Run Code Online (Sandbox Code Playgroud)
这将删除空字段。
如果有人有更好、更简单的答案,那就太好了。我不想放入这么多字段,$project即使它是动态的。
| 归档时间: |
|
| 查看次数: |
1690 次 |
| 最近记录: |