Mongodb 在$lookup中填充特定字段
我使用聚合对结果进行分组和填充,如下所示:Mongodb 在$lookup中填充特定字段,mongodb,mongoose,mongodb-query,aggregation-framework,Mongodb,Mongoose,Mongodb Query,Aggregation Framework,我使用聚合对结果进行分组和填充,如下所示: { "$group": { "_id": "$userId", "projectId": { "$push": "$projectId" } } }, { "$lookup": { "from": "users", "localField": "_id", "foreignField": "_id", "as": "user" } }, { $unw
{
"$group": {
"_id": "$userId",
"projectId": { "$push": "$projectId" }
}
},
{
"$lookup": {
"from": "users",
"localField": "_id",
"foreignField": "_id",
"as": "user"
}
},
{ $unwind:"$user" },
{
"$lookup": {
"from": "projects",
"localField": "projectId",
"foreignField": "_id",
"as": "projects"
}
}
但是我想从这个结果中填充特定的字段
$project,但它将projectId合并到一个数组中,并将projectName合并到另一个数组中。下面是我的结果:
[
{
"_id": "5c0a29e597e71a0d28b910aa",
"projectId": [
"5c0a2a8897e71a0d28b910ac",
"5c0a4083753a321c6c4ee024"
],
"user": {
"_id": "5c0a29e597e71a0d28b910aa",
"firstName": "Amit"
"lastName": "kumar",
"type": "developer",
"status": "active"
},
"projects": [
{
"_id": "5c0a2a8897e71a0d28b910ac",
"skypeId": "",
"projectName": "LN-PM",
"status": "ongoing",
"assignId": "5c0a2a0a97e71a0d28b910ab"
},
{
"_id": "5c0a4083753a321c6c4ee024",
"skypeId": "",
"status": "pending",
"assignId": "5c0a2a0a97e71a0d28b910ab"
}
]
}
]
现在,我想从user字段中获取唯一的“firstName and _id”字段,并从projects字段中获取“projectName and _id”字段,您可以在下面的聚合中使用mongodb3.6及更高版本 使用较新的语法,您可以在管道中使用ion
谢谢它的工作,请您提供您的电子邮件,以便我可以ping您在未来关于mongoDb查询?我还有一个查询。你能帮忙吗?
db.collection.aggregate([
{ "$group": {
"_id": "$userId",
"projectId": { "$push": "$projectId" }
}},
{ "$lookup": {
"from": "users",
"let": { "userId": "$_id" },
"pipeline": [
{ "$match": { "$expr": { "$eq": [ "$_id", "$$userId" ] }}},
{ "$project": { "firstName": 1 }}
],
"as": "user"
}},
{ "$unwind": "$user" },
{ "$lookup": {
"from": "projects",
"let": { "projectId": "$projectId" },
"pipeline": [
{ "$match": { "$expr": { "$in": [ "$_id", "$$projectId" ] }}},
{ "$project": { "projectName": 1 }}
],
"as": "projects"
}}
])