Wie aktualisiere ich mit MongoDB ein Unterdokument eines Unterarrays, wenn die Elementposition unbekannt ist?

Ich versuche, ein Unterdokument eines Unterarrays zu aktualisieren, kann mich jedoch nicht darauf verlassen, dass die Position des Elements im Array immer gleich ist. Wie aktualisiere ich es?

Hier ist zum Beispiel mein Dokument, ich möchte nur ein anderes Tag-Objekt (key / val) auf dentags Anordnung vonreal_pagenum: 1 des pdf mit dem_id vonObjectId("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
        }
    ],
}

Um es noch einmal zu wiederholen, ist es das Ziel, zuerst das richtige PDF von anzuvisieren_id, dann die richtige Seite vonreal_pagenum und in die Seite des PDFs schiebentags Array.

Ich hatte versucht:

db.projects.update({'pdfs.pdf_id':ObjectId("50634e25dc7c22c64d000007")},
    {$push:{'pages.$.tags':{'key':'foo','val':'bar'}}},false,false);

aber das kommt nicht auf das niveau, das ich brauche. Ich habe gelesen, dass ich eine verwenden kannKombination des Positionsoperators mit der tatsächlichen ElementpositionAber auch hier kann ich die Position des Elements nicht garantieren oder kennen.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage