Mongo聚合排除空字段

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)

Dus*_*gal 6

弄清楚了。

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

{
  thisExists: { $ifNull : ["$thisExists","$false"]},
  thisDoesNotExist : {$ifNull : ["$thisDoesNotExist","$false"]}
}
Run Code Online (Sandbox Code Playgroud)

这将删除空字段。

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