J'essaie de mettre à jour un seul sous-élément contenu dans un tableau dans un document mongodb. Je veux référencer le champ en utilisant son index de tableau (les éléments du tableau n'ont pas de champs dont je peux garantir qu'ils seront des identifiants uniques). Il semble que cela devrait être facile à faire, mais je n'arrive pas à trouver la syntaxe.
Voici ce que je veux faire en pseudo-json.
Avant :
{
_id : ...,
other_stuff ... ,
my_array : [
{ ... old content A ... },
{ ... old content B ... },
{ ... old content C ... }
]
}
Après :
{
_id : ...,
other_stuff ... ,
my_array : [
{ ... old content A ... },
{ ... NEW content B ... },
{ ... old content C ... }
]
}
Il semble que la requête devrait être quelque chose comme ça :
//pseudocode
db.my_collection.update(
{_id: ObjectId(document_id), my_array.1 : 1 },
{my_array.$.content: NEW content B }
)
Mais ça ne marche pas. J'ai passé beaucoup trop de temps à chercher dans la documentation de mongodb et à essayer différentes variations de cette syntaxe (par exemple en utilisant $slice
etc.). Je ne trouve pas d'explication claire sur la manière d'effectuer ce type de mise à jour dans MongoDB.