Я пытаюсь обновить один подэлемент, содержащийся в массиве в документе mongodb. Я хочу ссылаться на поле, используя его индекс массива (элементы в массиве не имеют никаких полей, которые я могу гарантировать, будут уникальными идентификаторами). Похоже, это должно быть легко сделать, но я не могу понять синтаксис.
Вот что я хочу сделать в псевдо-json.
До:
{
_id : ...,
other_stuff ... ,
my_array : [
{ ... old content A ... },
{ ... old content B ... },
{ ... old content C ... }
]
}
После:
{
_id : ...,
other_stuff ... ,
my_array : [
{ ... old content A ... },
{ ... NEW content B ... },
{ ... old content C ... }
]
}
Похоже, что запрос должен быть примерно таким:
//pseudocode
db.my_collection.update(
{_id: ObjectId(document_id), my_array.1 : 1 },
{my_array.$.content: NEW content B }
)
Но это не работает. Я слишком долго искал документы mongodb и пробовал разные варианты этого синтаксиса (например, используя $slice
и т.д.). Я не могу найти ясного объяснения того, как выполнить этот вид обновления в MongoDB.