如何更新mongoose的特定领域?

我有一个数据集是

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" }

这个操作的URL是—> 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 } 

我如何只更新一个特定的领域让说status字段属于某个候选人_id在mongodb,这是我的尝试

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

我会得到这个错误如果我使用上述操作。

MongoError:位置运算符没有find查询所需的匹配。 Unexpanded更新:候选人。$。状态

$是解决scheme:

 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); });