如何更新mongoose中的特定字段?

时间:2015-11-16 18:41:04

标签: node.js mongodb mongoose mongodb-query

我有一个

的数据集
var JobSchema = Schema({
  candidates: [{
    user: { type: Schema.Types.ObjectId, ref: 'User'},
    status: { type: String, default: 'In Progress' },
  }]
});

我想找到具体的job's _id并更新特定候选人的字段,例如{ _id: 123, user: 12345, status: "In Progress" }

此操作的网址是---> localhost:3000/apply/:job_id/user_id

例如

假设这是作业mongodb中当前保存的数据

  { 
   "_id" : 123, ---> job_id

   "candidates" : 
     [{ 
        "_id" : 234 , 
        "user": 345 , --> user_id
        "status" : "In Progress" 
     }, 

       { 
        "_id" : 345 , 
        "user": 678 , --> user_id
        "status" : "In Progress" 
      }]
    "__v" : 0 
  }

如何仅更新特定字段,例如属于mongodb中某个候选人status的{​​{1}}字段,这是我的尝试

_id

如果我使用上述操作,我将收到此错误。

MongoError:位置运算符未找到查询所需的匹配项。未更新的更新:候选人。$。status

1 个答案:

答案 0 :(得分:9)

$是解决方案:

Job.update(
    { 
        _id: found._id, 
        'candidates.user': req.params.user_id
    },
    {
        $set: { 'candidates.$.status': 'Accepted'} },
    }, function(err, count) {
           if (err) return next(err);
           callback(err, count);
});