在Mongo中,进行
我有以下查询:
$lookup
聚合后,我希望请求仅返回一些字段而不是整个文档。我有以下查询:
db.somecollection.aggregate([{
$lookup: {
from: "campaigns",
localField: "campId",
foreignField: "_id",
as: "campaign"
}
}, {
$unwind: "$campaign"
}, {
$lookup: {
from: "entities",
localField: "campaign.clientid",
foreignField: "_id",
as: "campaign.client"
}
}]);
这个请求将会返回给我这个:
{
"_id" : ObjectId("56cc7cd1cc2cf62803ebfdc7"),
"campId" : ObjectId("56c740e4479f46e402efda84"),
"articleId" : ObjectId("56c742c06094640103ba3843"),
"campaign" : {
"_id" : ObjectId("56c740e4479f46e402efda84"),
"clientid" : ObjectId("56c740b8479f46e402efda83"),
"client" : [
{
"_id" : ObjectId("56c740b8479f46e402efda83"),
"username" : "someusername",
"shhh" : "somehashedpassword",
"email" : "mail@mail.com",
}
]
}
请求已经正常工作,但我希望过滤campaign.client
字段,只获取例如_id
和username
。在MongoDB aggregate
请求中有一种方法可以实现这个吗?
$project
阶段。{ $project : { _id1 : 1, campId : 1, articleId : 1, campaign._id : 1, campaign.clientid : 1, campaign.client._id : 1, campaign.client.username : 1 } }
注:此处为MongoDB中的聚合管道操作,$project
阶段用于投影(即只保留)指定文档字段,如示例代码所示。 - SiddAjmera