Après quelques recherches supplémentaires, il semble que la seule façon de modifier le tableau dans un tableau serait avec une logique extérieure pour trouver l'index de l'élément que je veux changer. Cela nécessiterait que chaque modification ait une requête de recherche pour localiser l'index, puis une requête de mise à jour pour modifier le tableau. Cela ne semble pas être la meilleure façon.
Lien vers un cas JIRA 2010 demandant plusieurs éléments positionnels...
Comme je connaîtrai toujours l'ID de la fonctionnalité, j'ai choisi de revoir la structure de mon document.
{
"_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"
},
}
},
]
},
Avec la nouvelle structure, les modifications peuvent être apportées de la manière suivante :
db.orgs.update({_id: "v5y8nggzpja5Pa7YS", "groups._id": "s86CbNBdqJnQ5NWaB"}, {$set: {"groups.$.features.1.name":"Blog Test 1"}});