Node.js 如何更新mongoose中的特定字段?
我有一个数据集是Node.js 如何更新mongoose中的特定字段?,node.js,mongodb,mongoose,mongodb-query,Node.js,Mongodb,Mongoose,Mongodb Query,我有一个数据集是 var JobSchema = Schema({ candidates: [{ user: { type: Schema.Types.ObjectId, ref: 'User'}, status: { type: String, default: 'In Progress' }, }] }); 我想找到一个特定的工作的并更新一个特定应聘者的字段,例如{{id:123,user:12345,status:“In Progress”} 此操作的url为--
var JobSchema = Schema({
candidates: [{
user: { type: Schema.Types.ObjectId, ref: 'User'},
status: { type: String, default: 'In Progress' },
}]
});
我想找到一个特定的工作的
并更新一个特定应聘者的字段,例如{{id:123,user:12345,status:“In Progress”}
此操作的url为-->localhost:3000/apply/:job\u id/user\u 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中只更新特定字段,比如属于某个候选人的\u id
的状态
字段,下面是我的尝试
Job.update(
{
_id: req.params.job_id,
},
{
$set: {'candidates.$.status': 'Accepted'} ,
}, function(err, count) {
if (err) return next(err);
callback(err, count);
});
如果我使用上述操作,我将得到此错误
MongoError:位置运算符未从查询中找到所需的匹配项。未展开的更新:候选者。$。状态是解决方案:
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);
});