【问题标题】:Mongo aggregation exclude null fieldsMongo 聚合排除空字段
【发布时间】:2019-06-13 12:48:30
【问题描述】:

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

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

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

小组赛阶段:

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

结果:

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

【问题讨论】:

    标签: mongodb aggregation-framework


    【解决方案1】:

    想通了。

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

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

    这将删除为空的字段。

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

    【讨论】:

      猜你喜欢
      • 2019-01-27
      • 2020-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多