MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Вмъкване на данни във вложен масив в mongodb

Можете да актуализирате вградения документ „продажби“ вътре в масива „act_mgr“ със следния оператор за актуализиране:

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

Можете да добавите вградения документ, съдържащ информацията за „разработчик“, към масива по следния начин:

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

Документацията за модификаторите $push и $set може да бъде намерена в документацията за „Актуализиране“:http ://www.mongodb.org/display/DOCS/Updating

Повече информация относно създаването и актуализирането на вградени документи с Mongo db може да бъде намерена в документацията, озаглавена „Dot Notation (Reaching into Objects)“http://www.mongodb.org/display/DOCS/Dot+Notation+%28Reaching+into+Objects%29

Информация за актуализиране на вградени документи с помощта на позиционния оператор "$" може да бъде намерена в раздела "Позиционният оператор $" на документацията "Актуализиране".
http://www.mongodb.org/display/DOCS/Updating#Updating-The%24positionaloperator

Внимание:обикновено е по-често всички вградени документи да съответстват на една и съща структура, така че отделните вградени документи да могат да бъдат препращани по-лесно. Вашият масив "продажби" е добър пример за това; всеки вграден документ съдържа едни и същи ключове, "sno", "message" и "status"

Въпреки това, вградените документи във вашия масив "act_mgr" съдържат различни ключове; първият съдържа "продажби", а вторият съдържа "разработчик". Вместо това може би помислете за следната структура:

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

Сега всеки вграден документ съдържа едни и същи ключове „title“, „agent“ и „last_interacted“.

Можете да актуализирате поддокументи със следната команда.

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

Надяваме се, че това ще ви позволи да направите актуализациите, от които се нуждаете, и може би ще ви даде храна за размисъл относно дизайна на схемата. Успех!




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. грешка при заявка за актуализиране на mongo

  2. Групиране по дата с местна часова зона в MongoDB

  3. Попълване само на определени полета в mongoose

  4. Mongoose JS заявките се връщат нула или празни

  5. Съкратете MongoDB ID в javascript