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!