因为你
messages
是一个数组字段,当您提供
.dot
符号表示法
as
(
"messages.authorId"
)表达式。
所以如果你想填充里面的每个用户
信息
你需要的阵列
$unwind
这个
信息
首先数组以添加新键,然后
$group
再滚回阵列。
db.communications.aggregate([
{ "$unwind": "$messages" },
{ "$lookup": {
"from": "users",
"localField": "messages.authorId",
"foreignField": "_id",
"as": "messages.authorId"
}},
{ "$unwind": "$messages.authorId" },
{ "$group": {
"_id": "$_id",
"messages": { "$push": "$messages" },
"type": { "$first": "$type" },
"title": { "$first": "$title" },
"receivers": { "$first": "$receivers" }
}}
])