0
我不认为这是重复的,但请纠正我,如果我错了。无论如何,我只想返回“apple”和与用户的对象电子邮件地址相匹配的客户成员角色。我使用$ elemMatch,但返回整个客户对象,我只想要“成员”属性,就是这样。Mongodb - 查询对象数组,但只返回一个属性
{
"_id" : ObjectId("54d24e5df2878d40192beabd"),
"apple" : "yes",
"orange" : "yes",
"customers" : [
{
"name" : "Jay Smith",
"email" : "[email protected]",
"member" : "silver",
},
{
"name" : "Sarah Carter",
"email" : "[email protected]",
"member" : "gold",
},
{
"name" : "Jack Whatever",
"email" : "[email protected]",
"member" : "gold",
},
]
}
理想的结果回来是:
{
"_id" : ObjectId("54d24e5df2878d40192beabd"),
"apple" : "yes",
"member" : "gold"
}
甚至这样就足够了:
{
"_id" : ObjectId("54d24e5df2878d40192beabd"),
"apple" : "yes",
"orange" : "yes",
"customers" : [
{"member" : "gold"}
]
}
这是目前我有:
ItemsModel.find({ _id: { $in: _.pluck(user.items, 'itemId') }, active: true},
{apple: 1, customers: {$elemMatch: {email: user.email}} },
function(error, items) {
if (error) { return next(error); }
req.payload = {};
req.payload.items = items;
next();
});
任何帮助真的很感激。这甚至有可能吗?谢谢!
我得到它的客户:“成员”:“黄金”],而不是作为“会员”:“金”,但我还是会纪念这是正确的答案。天才的东西。谢谢! – Justin
糟糕,应该是会员:'$ customers.member'。我修改了我的答案 –