私は学生オブジェクトのコレクションを持っています。私はこの学生のドキュメントをMongoDBコレクションに持っていて、この学生が持っているコースの1つに属する教師を更新したい。たとえば、データベースコースに属するDannyの名前を更新したいとします。MongoDBの二重ネストされた配列内のオブジェクトを更新しています
{
"firstName": "John",
"lastName": "Wayne",
"age": 25,
"bbId": "johx0055",
"courses" : [
{
"name" : "Web development",
"teachers" : [
{
"firstName" : "Bob",
"lastName" : "Birch"
}
]
},
{
"name" : "Interface Design",
"teachers" : [
{
"firstName" : "Roxanna",
"lastName" : "Doe"
}
]
},
{
"name" : "Databases",
"teachers" : [
{
"firstName" : "Jack",
"lastName" : "X"
},
{
"firstName" : "Danny",
"lastName" : "Doe"
}
]
}
]
}
これをnodejs環境で更新しようとしています。私はこのクエリを使用してみました、これは適切なソリューションに私が得た最も近かった:0が示されているように、
db.collection('students').update({ 'bbId' : johx0055, 'courses.name' : 'Databases', 'courses.teachers.firstName' : 'Danny'}, { $set : { 'courses.$.teachers.0.firstName' : 'X' }}, (err, result) => {
if (err) {
console.log(err);
//console.log({ "status": "error", "type": "001 -> create student", "message": "Error when updating teacher" });
return;
}
console.log({ "status": "OK", "message": "Successfully updated teacher" });
})
しかし、唯一の教師配列の最初の要素(ジャック)を更新
インデックスキーはどのキーですか? –