给出这样的架构:
UserSchema = new Schema({
name: String,
donations: [
{
amount: Number,
charity: {
type: Schema.Types.ObjectId,
ref: 'charity'
}
}
]
});
我有一个用户和非营利组织的(字符串)ID,我想获得用户捐赠的金额。我在lodash中使用此查询:
User.findOne({
_id: userId
}, function(err, user) {
var amount = _.find(user.donations, {charity: charityId});
console.log("the amount is: ", amount);
});
这里的金额返回未定义,即使它也不应该猜测我不应该使用lodash
。在给定特定userId
和charityId
的情况下,获得捐赠金额的正确方法是什么?
答案 0 :(得分:4)
这与我链接的可能重复非常相似,因为您可以在不使用lodash的情况下执行此操作:
User.findOne({
_id: userId,
'donations.charity': charityId
}, {
'donations.$': 1
}, function(err, user) {
console.log("the amount is: ", user.donations[0].amount);
});