我试图更新文档中的数组内的对象。对象不是子文档,因此没有唯一的ID。我尝试过看各种方法来做到这一点,但它似乎没有任何效果(如在,什么也没有发生 - 没有错误,但文件不更新)使用猫鼬更新MongoDB数组中的对象
可能更容易显示。代码首先,这里在此集合中文档的例子:
{
_id: 123,
//other fields go here
submissions: [
{
submission: 1,
downloaded: null, //This should be an ISODate when populated
assessor: null, //This should be an ObjectID when populated
feedbackUploaded: null, //This should also be an ISODate
path: '401Test1.doc',
assessorNotes: null //This should be a string when populated
},
{
submission: 2,
downloaded: null,
assessor: null,
feedbackUploaded: null,
path: '401Test2.doc',
assessorNotes: null
}
]
}
现在我的猫鼬查询(特快航线内):
const unit = req.body.unit; //e.g. 123
const submission = req.body.submission // e.g. 2
const date = Date.now();
Unit.update({ "_id": unit, "submissions.submission": submission }, {
$set: {
'submissions.assessorNotes': req.body.assessorComments,
'submissions.feedbackUploaded': date,
'submissions.assessor': req.body.assessor
}, function(err){
//callback
}
})
我也试着在此使用$
符号$set
命令即'submissions.$.assessorNotes': req.body.assessorComments'
,但这似乎并不奏效。
我哪里错了?
干杯!
Chris
它应该的位置操作'$'工作。你确定你有一场比赛吗?如果你只是用这些参数“发现”,你会找到这个文件吗? – TomG
尝试运行一个'find'并且它返回了正确的文档,所以看起来好像我得到了一个匹配 - 它只是没有更新。已经尝试过'findOneAndUpdate' - 同样的问题 – Chris