文書内の配列内のオブジェクトを更新しようとしています。オブジェクトはサブ文書ではないため、一意のIDを持ちません。私はこれを行うにはさまざまな方法を試してみましたが、何も起こりません(何も起こりません - エラーはありませんが、ドキュメントは更新されません)。Mongooseで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'
でも、これはうまくいかないようです。
どこが間違っていますか?
乾杯!クリス
それは、位置演算子 '$'で動作するはずです。あなたは本当にマッチしていますか?これらのパラメータで 'find'するだけであれば、ドキュメントを見つけますか? – TomG
'find'を実行しようとしたときに正しい文書が返されたので、一致しているように見えます。 'findOneAndUpdate'で試してみました - 同じ問題 – Chris