Efter lite mer forskning ser det ut som att det enda sättet att modifiera arrayen inom en array skulle vara med lite extern logik för att hitta indexet för elementet jag vill ändra. Att göra detta skulle kräva att varje ändring har en sökfråga för att lokalisera indexet, och sedan en uppdateringsfråga för att ändra arrayen. Detta verkar inte vara det bästa sättet.
Länk till ett JIRA-ärende från 2010 som begär flera positionselement...
Eftersom jag alltid kommer att känna till funktionens ID, har jag valt att revidera 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 nya strukturen kan ändringar göras på följande sätt:
db.orgs.update({_id: "v5y8nggzpja5Pa7YS", "groups._id": "s86CbNBdqJnQ5NWaB"}, {$set: {"groups.$.features.1.name":"Blog Test 1"}});