Estoy intentando actualizar un solo subelemento contenido dentro de una matriz en un documento mongodb. Quiero hacer referencia al campo usando su índice de matriz (los elementos dentro de la matriz no tienen ningún campo que pueda garantizar que serán identificadores únicos). Parece que esto debería ser fácil de hacer, pero no puedo entender la sintaxis.
Esto es lo que quiero hacer en pseudo-json.
Antes de:
{
_id : ...,
other_stuff ... ,
my_array : [
{ ... old content A ... },
{ ... old content B ... },
{ ... old content C ... }
]
}
Después:
{
_id : ...,
other_stuff ... ,
my_array : [
{ ... old content A ... },
{ ... NEW content B ... },
{ ... old content C ... }
]
}
Parece que la consulta debería ser algo como esto:
//pseudocode
db.my_collection.update(
{_id: ObjectId(document_id), my_array.1 : 1 },
{my_array.$.content: NEW content B }
)
Pero esto no funciona. He pasado demasiado tiempo buscando en los documentos de mongodb y probando diferentes variaciones de esta sintaxis (por ejemplo $slice
, usando , etc.). No puedo encontrar una explicación clara de cómo realizar este tipo de actualización en MongoDB.