Используя 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);

но это не достигает уровня, который мне нужен. Я прочитал, что могу использоватькомбинация позиционного оператора с фактической позицией элементано, опять же, я не могу гарантировать или знать положение элемента.

Ответы на вопрос(3)

Ваш ответ на вопрос