我有一个mongo集合
书
{
"_id": ObjectId('5a1d21044e0ae92f7455f651'),
"author": "5a1d2629271a75167c15d284",
"name": "Grafta"
}
作者
{
"_id": "ObjectId('5a1d2629271a75167c15d284')",
"name": "Anto"
}
如何将汇总与books.author
和author._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
答案 0 :(得分:0)
ObjectId
构造函数不会在聚合管道中进行评估,而是立即使用$author
作为参数,这会导致错误。
虽然至少this answer 描述了如何在查询中转换数据,但我认为正确的做法是通过使$author
成为正确的{{1}来修复架构。 }。