如何处理在 $project 阶段添加的字段

How can work on a field which is added in $project stage

我的数据库里有这个数据(这里只提供相关部分):

[
  {
    "geojson": 5,
    "entity_status_update": "2021-12-28T10:16:58.000+00:00"
  },
  {
    "geojson": 7,
    "entity_status_update": "2021-12-03T10:16:58.000+00:00"
  },
  {
    "geojson": 2,
    "entity_status_update": "2021-11-08T10:16:58.000+00:00"
  }
]

我正在尝试添加一个名为 deadline 的新字段,它应该等于 entity_status_update+geojson 天。我正在使用 mongodb 的 $dateAdd 方法进行添加。我的问题是我找不到在查询中使用 days_to_add 的方法。我想原因是,它还处于$project阶段。

[ 
  { 
    "$project": {
      "days_to_add": "$geo_json",                   // use this
      "deadline": {
        "$dateAdd": {
          "startDate": "$entity_status_update",
            "unit": "day",
            "amount": "$days_to_add"                // in here
        }
      }
    }
  }
]

我怎样才能做到这一点?

P.S。我一定不能直接在计算中使用geojson

您可以使用 $addFields 添加 days_to_add,然后在您的 $project 阶段使用它

mongoplayground

db.collection.aggregate([
  {
    "$addFields": {
      "days_to_add": "$geojson"
    }
  },
  {
    "$project": {
      "days_to_add": 1,
      "deadline": {
        "$dateAdd": {
          "startDate": "$entity_status_update",
          "unit": "day",
          "amount": "$days_to_add"
        }
      }
    }
  }
])