mongodb与临时场地聚合

时间:2018-01-25 07:46:08

标签: mongodb

我有一个mongo集合

{
  "_id": ObjectId('5a1d21044e0ae92f7455f651'),
  "author": "5a1d2629271a75167c15d284",
  "name": "Grafta"
}

作者

{
  "_id": "ObjectId('5a1d2629271a75167c15d284')",
  "name": "Anto"
}

如何将汇总与books.authorauthor._id

一起使用

在聚合中使用$addFields尝试

db.getCollection('books').aggregate([

  {
      $addFields:{aId: ObjectId("$author")},
  },

  {
    $lookup: {
      from: "author",
      localField: "aId",
      foreignField: "_id",
      as: "authorDetails"
    }
  }
])

它会抛出错误

Failed to execute script.

Error: invalid object id: length :
@(shell):4:24

1 个答案:

答案 0 :(得分:0)

ObjectId构造函数不会在聚合管道中进行评估,而是立即使用$author作为参数,这会导致错误。

虽然至少this answer 描述了如何在查询中转换数据,但我认为正确的做法是通过使$author成为正确的{{1}来修复架构。 }。