MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Inserisci i dati nell'array nidificato in mongodb

Puoi aggiornare il documento "vendite" incorporato all'interno dell'array "act_mgr" con la seguente istruzione di aggiornamento:

> 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"
        }
    ]
}
> 

Puoi aggiungere il documento incorporato contenente le informazioni sullo "sviluppatore" all'array in questo modo:

> 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"
        }
    ]
}
> 

La documentazione sui modificatori $push e $set può essere trovata nella documentazione "Aggiornamento":http ://www.mongodb.org/display/DOCS/Aggiornamento

Ulteriori informazioni sulla creazione e l'aggiornamento di documenti incorporati con Mongo db sono disponibili nella documentazione intitolata "Dot Notation (Reaching into Objects)"http://www.mongodb.org/display/DOCS/Dot+Notation+%28Reaching+into+Objects%29

Le informazioni sull'aggiornamento dei documenti incorporati utilizzando l'operatore posizionale "$" sono disponibili nella sezione "L'operatore posizionale $" della documentazione "Aggiornamento".
http://www.mongodb.org/display/DOCS/Updating#Updating-The%24positionaloperator

Un avvertimento:generalmente è più comune che i documenti incorporati corrispondano tutti alla stessa struttura, in modo che i singoli documenti incorporati possano essere referenziati più facilmente. Il tuo array "vendite" ne è un buon esempio; ogni documento incorporato contiene le stesse chiavi, "sno", "messaggio" e "stato"

Tuttavia, i documenti incorporati all'interno dell'array "act_mgr" contengono chiavi diverse; il primo contiene "vendite" e il secondo contiene "sviluppatore". Invece, forse considera la seguente struttura:

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

Ora, ogni documento incorporato contiene le stesse chiavi, "titolo", "agente" e "last_interacted".

È possibile aggiornare i documenti secondari con il comando seguente.

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

Si spera che questo ti consentirà di apportare gli aggiornamenti di cui hai bisogno e forse di darti qualche spunto di riflessione sulla progettazione dello schema. Buona fortuna!