MongoDB Масив от обекти с помощта на insert() с пример
⚡ Умно обобщение
MongoDB Масив от обекти, използващ insert(), показва как да се добавят няколко документа към колекция с една операция. Той съхранява масив от записи на служители, вгражда масиви в документ и показва резултатите спретнато, използвайки функцията JSON print.

Какво представлява методът insert() в MongoDB?
Методът insert() в MongoDB добавя един или повече документи към колекция. Документът е набор от двойки поле-стойност, съхранявани в BSON, двоична форма на JSON. Когато подадете един документ, insert() съхранява този запис; когато подадете масив от документи, той ги съхранява всички в една операция, което е по-бързо от вмъкването им един по един.
Методът се изпълнява спрямо конкретна колекция, използвайки шаблона db.collection.insert(). Ако целевата колекция все още не съществува, MongoDB създава го автоматично по време на първото вмъкване. Всеки документ получава и уникално поле _id, ако не предоставите такова, така че всеки запис може да бъде идентифициран по-късно.
Въпреки че insert() все още работи, по-новите MongoDB Версиите предоставят insertOne() и insertMany() като по-ясни заместители. Примерите по-долу използват insert() за добавяне на масив от документи на служителите и след това показване на резултатите в четлив JSON формат.
Добавяне на масив от документи
Командата „вмъкване“ може да се използва и за вмъкване на множество документи в колекция наведнъж. Примерът на код по-долу може да се използва за вмъкване на множество документи наведнъж.
Следващият пример показва как може да се направи това,
Стъпка 1) Създаване на JavaСценарий променлива, наречена myEmployee за съхранение на масива от документи
Стъпка 2) Добавете необходимите документи с името на полето и стойностите към променливата
Стъпка 3) Използвайте командата за вмъкване, за да вмъкнете масива от документи в колекцията
var myEmployee= [ { "Employeeid" : 1, "EmployeeName" : "Smith" }, { "Employeeid" : 2, "EmployeeName" : "Mohan" }, { "Employeeid" : 3, "EmployeeName" : "Joe" }, ]; db.Employee.insert(myEmployee);
Ако командата е изпълнена успешно, ще се покаже следният изход
Резултатът показва, че тези 3 документа са добавени към колекцията.
Как да вмъкнете масив в документ
Освен вмъкването на масив от отделни документи, MongoDB ви позволява да съхранявате масив като поле в един документ. Това е полезно, когато един запис естествено съдържа списък със стойности, като например служител, който има няколко умения, или студент, записан в множество курсове. Защото MongoDB използва гъвкав модел на документ, масивът се намира директно вътре в обекта, а не в отделна таблица, което държи свързаните данни заедно.
Следният пример вмъква един документ на служител, който съдържа поле за масив, наречено „Умения“:
db.Employee.insert( { "Employeeid" : 4, "EmployeeName" : "Alan", "Skills" : [ "MongoDB", "Node.js", "Express" ] } );
Частите на този документ функционират, както следва:
- Идентификационен номер на служителя намлява Име на служителя са обикновени двойки поле-стойност.
- умения е поле за масив, което съдържа три низови стойности в квадратни скоби.
- Целият документ, включително вграденият масив, се съхранява с една операция за вмъкване.
След добавяне на записа, можете да потвърдите вградения масив с find заявка, която отпечатва резултата в JSON:
db.Employee.find( { "Employeeid" : 4 } ).forEach(printjson)
Резултатът показва масива Skills, вложен в документа на служителя. Later, можете да добавяте нови стойности към масива с оператора $push или да четете един елемент по неговата индексна позиция. Съхраняването на свързани стойности по този начин поддържа всеки документ самостоятелен, намалява нуждата от съединения между колекции и прави данните по-лесни за четене и поддръжка.
insert() срещу insertOne() срещу insertMany()
MongoDB предоставя три свързани метода за добавяне на данни. Таблицата по-долу ги сравнява, за да можете да изберете правилния:
| Начин на доставка | Цел | Пример |
|---|---|---|
| вмъкване () | Стар метод, който добавя един документ или масив от документи. Все още работи, но е остарял в по-новите драйвери. | db.Employee.insert(myEmployee) |
| вмъкниЕдно() | Добавя точно един документ и връща вмъкнатия му _id. Предпочита се за единични записи. | db.Employee.insertOne({ … }) |
| вмъкниМного() | Добавя масив от документи с едно извикване и връща всички вмъкнати _ids. Предпочита се за групови вмъквания. | db.Employee.insertMany([ { … }, { … } ]) |
За нови проекти използвайте insertOne() и insertMany(), защото те дават по-ясна цел и по-добро отчитане на грешки. Методът insert() остава достъпен главно за обратна съвместимост с по-стари уроци и скриптове.
Печат във формат JSON
JSON е формат, наречен JavaНотация на обект на скрипт, и е просто начин за съхраняване на информация по организиран, лесен за четене начин. В по-нататъшните ни примери ще използваме функцията за печат JSON, за да видим изхода в по-добър формат.
Нека да разгледаме пример за печат във формат JSON
db.Employee.find().forEach(printjson)
Code Обяснение:
- Първата промяна е да се добави функцията, наречена forEach(), към функцията find(). Това прави така, че се гарантира изричното преминаване през всеки документ в колекцията. По този начин имате по-голям контрол върху това какво можете да правите с всеки от документите в колекцията.
- Втората промяна е да поставите командата printjson в оператора forEach. Това ще накара всеки документ в колекцията да се показва във формат JSON.
Ако командата е изпълнена успешно, ще се покаже следният изход
Изход:
Резултатът ясно показва, че всички документи са отпечатани в стил JSON.


