如何使用mongoose从数组字段中获取特定对象

时间:2014-07-19 02:43:56

标签: node.js mongodb mongoose lodash

给出这样的架构:

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。在给定特定userIdcharityId的情况下,获得捐赠金额的正确方法是什么?

1 个答案:

答案 0 :(得分:4)

这与我链接的可能重复非常相似,因为您可以在不使用lodash的情况下执行此操作:

User.findOne({
  _id: userId,
  'donations.charity': charityId
}, {
  'donations.$': 1
}, function(err, user) {
  console.log("the amount is: ", user.donations[0].amount);
});