Po kilku dalszych badaniach wygląda na to, że jedynym sposobem na zmodyfikowanie tablicy w tablicy byłoby użycie zewnętrznej logiki, aby znaleźć indeks elementu, który chcę zmienić. Wykonanie tego wymagałoby, aby każda zmiana zawierała zapytanie find w celu zlokalizowania indeksu, a następnie zapytanie aktualizujące w celu zmodyfikowania tablicy. To nie wydaje się najlepszy sposób.
Link do sprawy JIRA 2010 żądającej wielu elementów pozycyjnych...
Ponieważ zawsze będę znać identyfikator funkcji, zdecydowałem się zmienić strukturę mojego dokumentu.
{
"_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"
},
}
},
]
},
W nowej strukturze zmiany można wprowadzać w następujący sposób:
db.orgs.update({_id: "v5y8nggzpja5Pa7YS", "groups._id": "s86CbNBdqJnQ5NWaB"}, {$set: {"groups.$.features.1.name":"Blog Test 1"}});