MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Wstaw dane w zagnieżdżonej tablicy w mongodb

Możesz zaktualizować osadzony dokument „sprzedaż” w tablicy „act_mgr” za pomocą następującej instrukcji aktualizacji:

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

Możesz dodać osadzony dokument zawierający informacje „dewelopera” do tablicy w następujący sposób:

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

Dokumentację modyfikatorów $push i $set można znaleźć w dokumentacji „Updating”:http ://www.mongodb.org/display/DOCS/Aktualizacja

Więcej informacji na temat tworzenia i aktualizowania osadzonych dokumentów za pomocą Mongo db można znaleźć w dokumentacji zatytułowanej „Notacja punktowa (dot. obiektów)”http://www.mongodb.org/display/DOCS/Dot+Notation+%28Reaching+into+Objects%29

Informacje na temat aktualizacji osadzonych dokumentów za pomocą operatora pozycyjnego „$” można znaleźć w sekcji „Operator pozycyjny $” w dokumentacji „Aktualizacja”.
http://www.mongodb.org/display/DOCS/Updating#Updating-The%24positionaloperator

Słowo ostrzeżenia:Ogólnie rzecz biorąc, osadzone dokumenty mają tę samą strukturę, dzięki czemu można łatwiej odwoływać się do poszczególnych osadzonych dokumentów. Twoja tablica „sprzedaży” jest tego dobrym przykładem; każdy osadzony dokument zawiera te same klucze, „sno”, „message” i „status”

Jednak osadzone dokumenty w tablicy „act_mgr” zawierają różne klucze; pierwsza zawiera „sprzedaż”, a druga „deweloper”. Zamiast tego rozważ następującą strukturę:

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

Teraz każdy osadzony dokument zawiera te same klucze, „tytuł”, „agent” i „last_interacted”.

Możesz zaktualizować dokumenty podrzędne za pomocą następującego polecenia.

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

Mam nadzieję, że pozwoli to na dokonanie niezbędnych aktualizacji i być może da ci trochę do myślenia na temat projektu schematu. Powodzenia!




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Regex, aby dopasować słowa w zdaniu według jego prefiksu

  2. Czy ktoś pracował z Aerospike? Jak wypada w porównaniu z MongoDB?

  3. Obraz dokowany mongo nie uruchamia skryptu po utworzeniu

  4. Jak zaktualizować wiele pól za pomocą Update.Set w MongoDB przy użyciu oficjalnego sterownika c#?

  5. Projektuj, aby filtrować właściwość w drugiej zagnieżdżonej tablicy