Estoy tratando de 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 serán identificadores únicos). Parece que esto debería ser fácil de hacer, pero no puedo entender la sintaxis.MongoDB: ¿Cómo actualizo un único subelemento en una matriz, referenciada por el índice dentro de la matriz?
Esto es lo que quiero hacer en pseudo-json.
Antes:
{
_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 debe 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 en esta sintaxis (por ejemplo, usando $slice
, etc.). No puedo encontrar ninguna explicación clara de cómo lograr este tipo de actualización en MongoDB.
No .. .. era realmente desconocido – Moumit