【发布时间】:2019-02-02 04:21:30
【问题描述】:
我的用户模式包含人员字段,其中包含 viewers 属性,其中包含一个 ObjectIds 数组作为用户集合本身的参考
{
"username": "user1",
"password": "password",
"email": "user1@gmail.com",
"people": [{
"id": 1,
"viewers": ["ObjectId....", "ObjectId...."]
},
{
"id": 2,
"viewers": ["ObjectId....", "ObjectId...."]
}
]
}
我需要做的是 $lookup 对于查看器中的每个元素,问题是当我使用下面的管道时,会为每个文档推送相同的查看器
{
$unwind: {
path: "$people.viewers",
preserveNullAndEmptyArrays: true
}
},
{
$lookup: {
from: "users",
localField: "people.viewers",
foreignField: "_id",
as: "people"
}
},
{
$unwind: {
path: "$viewers",
preserveNullAndEmptyArrays: true
}
},
{
$project: {
username: 1,
"viewers.username": 1
}
},
{
$group: {
_id: "$_id",
username: { $first: "$username" },
people: { $first: "$people" },
viewers: { $push: "$viewers" }
}
},
{
$project: {
username: 1,
"people.id": 1,
"people.viewers": "$viewers"
}
}
那个聚合有什么问题
【问题讨论】:
-
请提供样本数据集
标签: mongodb mongoose aggregation