Nach einigen weiteren Recherchen sieht es so aus, als ob die einzige Möglichkeit, das Array innerhalb eines Arrays zu ändern, darin besteht, mit einer externen Logik den Index des Elements zu finden, das ich ändern möchte. Dazu müsste jede Änderung eine Find-Abfrage haben, um den Index zu finden, und dann eine Update-Abfrage, um das Array zu ändern. Dies scheint nicht der beste Weg zu sein.
Link zu einem JIRA-Fall aus dem Jahr 2010, in dem mehrere Positionselemente angefordert werden...
Da ich die ID des Features immer kennen werde, habe ich mich entschieden, meine Dokumentenstruktur zu überarbeiten.
{
"_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"
},
}
},
]
},
Mit der neuen Struktur können Änderungen wie folgt vorgenommen werden:
db.orgs.update({_id: "v5y8nggzpja5Pa7YS", "groups._id": "s86CbNBdqJnQ5NWaB"}, {$set: {"groups.$.features.1.name":"Blog Test 1"}});