首页 > 解决方案 > Mongo 聚合排除空字段

问题描述

我有一个$first在多个字段上执行的聚合管道。

但是,在某些情况下,这些字段不存在。在这些情况下,该字段的值返回为null. 我需要一种方法来排除这些字段。

我尝试$ifNull$project舞台上使用,但它将字段的值设置为false而不是排除它们。

小组赛阶段:

{
  _id: null,
  thisExists: {
    $first: "$thisExists"
  },
  thisDoesNotExist: {
    $first: "$thisDoesNotExist"
  }
}

结果:

{
    _id:null,
    thisExists:"I exist",
    thisDoesNotExist:null
}

标签: mongodbaggregation-framework

解决方案


弄清楚了。

$project阶段,$ifNull应该返回"$false"而不是false

{
  thisExists: { $ifNull : ["$thisExists","$false"]},
  thisDoesNotExist : {$ifNull : ["$thisDoesNotExist","$false"]}
}

这将删除为空的字段。

如果有人有更好更简单的答案,那就太好了。$project即使它是动态的,我也不想放入这么多字段。


推荐阅读