Используя MongoDB, как мне обновить вложенный документ подмассива, когда позиция элемента неизвестна?
Я пытаюсь обновить поддокумент подмассива, но я не могу рассчитывать на положение элемента в массиве, чтобы оно всегда было одинаковым, поэтому как мне его обновить.
Например, вот мой документ, я просто хочу вставить другой объект тега (key / val) наtags
массивreal_pagenum
: 1 из PDF с_id
изObjectId("50634e26dc7c22c64d00000a")
{
"_id" : ObjectId("503b83dfad79cc8d26000004"),
"pdfs" : [
{
"_id" : ObjectId("50634e26dc7c22c64d00000a"),
"pages" : [
{
"real_pagenum" : 1,
"_id" : ObjectId("50634e74dc7c22c64d00002b"),
"tags" : [
{
"key" : "Item",
"val" : "foo"
},
{
"key" : "Item",
"val" : "bar"
}
]
},
{
"real_pagenum" : 2,
"_id" : ObjectId("50634e74dc7c22c64d00002b")
}
],
"title" : "PDF3",
"version" : 3
}
],
}
Чтобы повторить, цель состоит в том, чтобы сначала нацелить правильный PDF_id
то правая страницаreal_pagenum
и нажмите на эту страницу в формате pdftags
массив.
Я пытался:
db.projects.update({'pdfs.pdf_id':ObjectId("50634e25dc7c22c64d000007")},
{$push:{'pages.$.tags':{'key':'foo','val':'bar'}}},false,false);
но это не достигает уровня, который мне нужен. Я прочитал, что могу использоватькомбинация позиционного оператора с фактической позицией элементано, опять же, я не могу гарантировать или знать положение элемента.