MongoDB 在管道的 $project 阶段生成与新 ObjectId 相同的 ObjectId

MongoDB generates same ObjectId with new ObjectId in pipeline's $project stage

作为管道的最后阶段,我有一个 $project 这样的 :

{
  ...
  anId : new ObjectId()
}

但是 mongo 正在为每个文档生成相同的 ID。我希望它为每个投影文档生成一个新的不同 Id。如何在管道内做到这一点?

你可以借助 $function 聚合来做到这一点:

{
  anId: {
    $function: {
      body: function() {
        return new ObjectId();
      },
      args: [],
      lang: 'js'
    }
  }
}