След още малко проучване изглежда, че единственият начин за модифициране на масива в масив би бил с някаква външна логика да се намери индексът на елемента, който искам да променя. Правенето на това ще изисква всяка промяна да има заявка за намиране за намиране на индекса и след това заявка за актуализиране за модифициране на масива. Това не изглежда като най-добрият начин.
Връзка към случай на JIRA от 2010 г., изискващ множество позиционни елементи...
Тъй като винаги ще знам идентификационния номер на функцията, избрах да преразгледам структурата на моя документ.
{
"_id" : "v5y8nggzpja5Pa7YS",
"name" : "Example",
"display_name" : "EX1",
"groups" : [
{
"_id" : "s86CbNBdqJnQ5NWaB",
"name" : "Group1",
"display_name" : "G1",
"features" : {
"1" : {
type : "blog",
name : "[blog name]"
owner_id : "ga5YgvP5yza7pj8nS"
},
}
},
]
},
С новата структура промените могат да се правят по следния начин:
db.orgs.update({_id: "v5y8nggzpja5Pa7YS", "groups._id": "s86CbNBdqJnQ5NWaB"}, {$set: {"groups.$.features.1.name":"Blog Test 1"}});