Mongo聚合排除空字段

时间:2019-06-13 12:48:30

标签: mongodb aggregation-framework

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

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

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

小组赛阶段:

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

结果:

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

1 个答案:

答案 0 :(得分:0)

想通了。

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

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

这将删除为空的字段。

如果有人有一个更好,更轻松的答案,那就太好了。我宁愿不要在$project中放置这么多字段,即使它是动态的。