Вставка документов (insert) — MongoDB CRUD

Вставка документов (insert) — MongoDB CRUD
5 (100%) 2 votes

Метод db.collection.insert() служит для вставки / добавление новых документов (данных) в коллекцию.

После запуска оболочки MongoDB, если вы не выбрали базу, то по умолчанию оболочка выберет базу test. Если хотим создать новую базу в MongoDB, например blog, и переключится на него, то в консоле (в оболочке MongoDB) нужно выполнить следующую команду:

use blog

После этого увидим сообщение что мы переключились на базу blog — switched to db blog.

Вставка документов в коллекцию

С помощью метода / функции insert() можно создать коллекцию в MongoDB и вставить / добавить документ в коллекцию. Давайте создадим коллекцию пользователей (users) и вставляем туда простейший документ, который описывает пользователя:

db.users.insert({username: "vasya"})

Если до этого коллекция users не было создано, то после выполнение метода insert будет создано коллекция users и добавлен в коллекцию документ описывающий пользователей. А если коллекция было создано ранее, то просто будет выполнено операция вставки документа.

Данная операция возвращает объект WriteResult со статусом операции. При успешном выполнение операции вставки документа возвращается следующий объект:

WriteResult({"nInserted": 1})

Поле nInserted определяет количество добавленных документов. Если при вставке документа будет какое то ошибка, то в объекте WriteResult будет информация об ошибке.

Вставка более сложного документа

db.users.insert(
   {
     username: "john",
     contact: {
        email: "john@test.ru",
        country: "Армения",
        city: "Гюмри",
        address: "Адрес пользователя"
     },
     languages: ["Армянский", "Русский", "Английский"],
     favorites: {
         cities: ["Москва", "Ереван"],
         movies: ["Иван Васильевич меняет профессию", "Бриллиантовая рука"]
     },
     comments: [
         {article: "Имя Статьи", text: "очень длинный текст"},
         {article: "Вторая статья", text: "текст комментарии"}
     ]
   }
)

Модель данных в MongoDB является документо-ориентированной. Документ в MongoDB — это набор, состоящий из имени и значение свойств. Значение может быть простым типом, например: строка, числа и даты, но может быть массивом или даже другим документом. С помощью таких конструкций можно создать довольно сложные структуры данных.

Если операции вставки документов успешно выполнен, то мы можем делать простые запросы выборки документов из базы, чтобы убедиться, что все документы сохранены.

db.users.find()

Метод find без параметров возвращает все документы из коллекции users. Также мы можем узнать количество документов в коллекции users, используя метод count.

db.users.count()



Вставка нескольких документов в массиве

Для вставки / добавление сразу нескольких документов в коллекцию мы можем передать методу insert массив документов. Давайте создадим массив документов, которые нужно вставить в коллекцию. Мы можем в оболочке MongoDB писать JavaScript код:

var my_documents =
[
      {
        username: "kevin",
        contact: { city: "Gyumri", address: "My address" },
      },
      {
        username: "mike",
        contact: { city: "Moscow", address: "адрес" },
      },
      {
        username: "petya",
        contact: { city: "Ереван", address: "Мой адрес" },
      }
];

А теперь давайте передаем массив документов методу db.collection.insert().

db.users.insert(my_documents)

После вставки массива документов нам будет возвращено объект BulkWriteResult.

BulkWriteResult({
  "writeErrors" : [ ],
  "writeConcernErrors" : [ ],
  "nInserted" : 3,
  "nUpserted" : 0,
  "nMatched" : 0,
  "nModified" : 0,
  "nRemoved" : 0,
  "upserted" : [ ]
})

Опять же поле nInserted определяет количество добавленных документов.

После вставки документов, каждый документ будет иметь свой уникальный идентификатор. Это поле называется _di а значение генерируется автоматически и он всегда уникален.


Об авторе

Занимаюсь программированием уже более 7 лет. Часто использую JavaScript (Node.js) и Python. Хобби - Квантовая механика и нейронные сети.

Комментарии