sql >> Databáze >  >> NoSQL >> MongoDB

Vložte data do vnořeného pole v mongodb

Vložený dokument „prodej“ v poli „act_mgr“ můžete aktualizovat pomocí následujícího prohlášení o aktualizaci:

> db.sales.update({"act_mgr.sales.last_interacted":"[email protected]"}, {$push:{"act_mgr.$.sales.agent":"[email protected]"}, $set:{"act_mgr.$.sales.last_interacted":"[email protected]"}})
> db.sales.find().pretty()
{
    "_id" : ObjectId("4f855061dd53351011000b42"),
    "act_mgr" : [
        {
            "sales" : {
                "agent" : [
                    "[email protected]",
                    "[email protected]"
                ],
                "last_interacted" : "[email protected]"
            }
        }
    ],
    "email" : "[email protected]",
    "name" : "Aman",
    "sales" : [
        {
            "sno" : 1,
            "message" : "description",
            "status" : "open"
        },
        {
            "sno" : 12,
            "message" : "assad",
            "status" : "open"
        }
    ]
}
> 

Vložený dokument obsahující informace o "vývojáři" můžete přidat do pole takto:

> db.sales.update({"_id" : ObjectId("4f855061dd53351011000b42")}, {$push:{"act_mgr":{ "developer" : {"agent" : ["[email protected]" ],  "last_interacted" : "[email protected]" } }}})
> db.sales.find().pretty()
{
    "_id" : ObjectId("4f855061dd53351011000b42"),
    "act_mgr" : [
        {
            "sales" : {
                "agent" : [
                    "[email protected]",
                    "[email protected]"
                ],
                "last_interacted" : "[email protected]"
            }
        },
        {
            "developer" : {
                "agent" : [
                    "[email protected]"
                ],
                "last_interacted" : "[email protected]"
            }
        }
    ],
    "email" : "[email protected]",
    "name" : "Aman",
    "sales" : [
        {
            "sno" : 1,
            "message" : "description",
            "status" : "open"
        },
        {
            "sno" : 12,
            "message" : "assad",
            "status" : "open"
        }
    ]
}
> 

Dokumentaci k modifikátorům $push a $set lze nalézt v dokumentaci „Updating“:http ://www.mongodb.org/display/DOCS/Updating

Další informace o vytváření a aktualizaci vložených dokumentů pomocí Mongo db lze nalézt v dokumentaci s názvem "Dot Notation (Reaching into Objects)"http://www.mongodb.org/display/DOCS/Dot+Notation+%28Reaching+into+Objects%29

Informace o aktualizaci vložených dokumentů pomocí pozičního operátoru "$" lze nalézt v sekci "Poziční operátor $" v dokumentaci "Aktualizace".
http://www.mongodb.org/display/DOCS/Updating#Updating-The%24positionaloperator

Upozornění:Obecně je běžnější, aby všechny vložené dokumenty odpovídaly stejné struktuře, takže na jednotlivé vložené dokumenty lze snadněji odkazovat. Vaše pole „prodej“ je toho dobrým příkladem; každý vložený dokument obsahuje stejné klíče, „sno“, „zpráva“ a „stav“

Vložené dokumenty uvnitř pole "act_mgr" však obsahují různé klíče; první obsahuje „prodej“ a druhý obsahuje „vývojář“. Místo toho možná zvažte následující strukturu:

"act_mgr" : [
    {
        "title" : "sales",
        "agent" : [
            "[email protected]",
            "[email protected]"
        ],
        "last_interacted" : "[email protected]"
    },
    {
        "title": "developer",
        "agent" : [
            "[email protected]"
        ],
        "last_interacted" : "[email protected]"
    }
]

Nyní každý vložený dokument obsahuje stejné klíče, „title“, „agent“ a „last_interacted“.

Vnořené dokumenty můžete aktualizovat pomocí následujícího příkazu.

> db.sales.update({"act_mgr.title":"sales"}, {$push:{"act_mgr.$.agent":"[email protected]"}, $set:{"act_mgr.$.last_interacted":"[email protected]"}})

Doufejme, že vám to umožní provádět aktualizace, které potřebujete, a možná vám to dá podnět k zamyšlení ohledně návrhu schématu. Hodně štěstí!




  1. Nastavte klíč/hodnotu redis pomocí camel-redis

  2. Jak hledat dokument podle oid v mongoengine

  3. Jak vytvořím pracovníka resque automaticky při spuštění?

  4. Existuje způsob, jak spustit shell MongoDB (nebo metodu tojson) v přísném režimu JSON?