Efter noget mere forskning ser det ud til, at den eneste måde at ændre arrayet i et array ville være med en ekstern logik for at finde indekset for det element, jeg vil ændre. At gøre dette ville kræve, at hver ændring har en søgeforespørgsel for at finde indekset og derefter en opdateringsforespørgsel for at ændre arrayet. Det virker ikke som den bedste måde.
Link til en JIRA-sag fra 2010, der anmoder om flere positionelle elementer...
Da jeg altid vil kende id'et for funktionen, har jeg valgt at revidere min dokumentstruktur.
{
"_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"
},
}
},
]
},
Med den nye struktur kan ændringer foretages på følgende måde:
db.orgs.update({_id: "v5y8nggzpja5Pa7YS", "groups._id": "s86CbNBdqJnQ5NWaB"}, {$set: {"groups.$.features.1.name":"Blog Test 1"}});