MongoDB — HackerX https://hackerx.ru Блог о программировании, СУБД, сетях и алгоритмах. Уроки и статьи по разным языкам программирования Wed, 11 Jul 2018 07:15:23 +0000 ru-RU hourly 1 https://wordpress.org/?v=4.9.8 MongoDB CRUD-операции. Вставка, изменение, удаление и выборка документов https://hackerx.ru/mongodb-crud/ https://hackerx.ru/mongodb-crud/#respond Sun, 13 Aug 2017 13:02:48 +0000 https://hackerx.ru/?p=761 CRUD-операции — это создание (create), чтение (read), обновление (update) и удаление (delete) в документов MongoDB. Содержание: Создание документов Чтение документов Обновление документов Удаление документов   Создание / вставка документов Операции создание или вставки добавляют новые документы в коллекцию. Если при вставке документов в коллекцию данная коллекция не будет существовать, то она будет создана автоматически. MongoDB предоставляет следующие методы для вставки документов в […]

The post MongoDB CRUD-операции. Вставка, изменение, удаление и выборка документов appeared first on HackerX.

]]>
CRUD-операции — это создание (create), чтение (read), обновление (update) и удаление (delete) в документов MongoDB.

Содержание:

 

Создание / вставка документов

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

MongoDB предоставляет следующие методы для вставки документов в коллекцию:

  • db.collection.insertOne() Поддерживается с версии 3.2
  • db.collection.insertMany() Поддерживается с версии 3.2

 

В MongoDB операции вставки нацелены на одну коллекцию. Все операции записи в MongoDB являются атомарными на уровне одного документа.

db.users.insertOne(
  {
    name: "sue",
    age: 26
    status: "pending"
  }
)

MongoDB - вставка документов

Чтение / выборка

Операции чтение / выборки извлекают документы из коллекции. MongoDB предоставляет следующие методы для чтения документов из коллекции:

  • db.collection.find()

 

В запросе можно указать необходимые фильтры и критерии для выборки документов.

db.users.find(
  {
    {age: { $gt: 18 } },
    {name: 1, address: 1 }
  }
).limit(5)

MongoDB - Операции чтение

Обновление




Операции обновления изменяют существующие документы в коллекции. MongoDB предоставляет следующие методы для обновления документов коллекции:

  • db.collection.updateOne() Поддерживается с версии 3.2
  • db.collection.updateMany() Поддерживается с версии 3.2
  • db.collection.replaceOne() Поддерживается с версии 3.2

 

В MongoDB операции обновления нацелены на одну коллекцию. Все операции записи в MongoDB являются атомарными на уровне одного документа. В запросе можно указать необходимые фильтры и критерии для обновление документов. Синтаксис тот же, что и для операции чтения.

db.collection.updateMany(
  {
    {age: { $lt: 18 }},
    {$set: { status: "reject" }}
  }
)

MongoDB - обновления документов

Удаление

Операции удаления удаляют документы из коллекции. MongoDB предоставляет следующие методы для удаления документов коллекции:

  • db.collection.deleteOne() Поддерживается с версии 3.2
  • db.collection.deleteMany() Поддерживается с версии 3.2

 

В MongoDB операции удаления нацелены на одну коллекцию. Все операции записи в MongoDB являются атомарными на уровне одного документа. В запросе можно указать необходимые фильтры и критерии для удаление документов. Синтаксис тот же, что и для операции чтения.

db.collection.deleteMany(
  {status: "reject"}
)

MongoDB - удаление документов

The post MongoDB CRUD-операции. Вставка, изменение, удаление и выборка документов appeared first on HackerX.

]]>
https://hackerx.ru/mongodb-crud/feed/ 0
MongoDB: Что такое, для чего нужен и где использовать https://hackerx.ru/chto-takoe-mongodb/ https://hackerx.ru/chto-takoe-mongodb/#respond Sun, 13 Aug 2017 09:39:55 +0000 https://hackerx.ru/?p=736 В этой статье мы познакомимся с NoSQL базой данных MongoDB, узнаем когда можно использовать MongoDB и чем он отличается от остальных СУБД. Для серверной JavaScript, то есть для Node.js, самым естественным хранилищем данных является документо-ориентированная база данных MongoDB. Давайте рассмотрим подробнее, почему именно MongoDB. Что такое MongoDB MongoDB (от англ. humongous — огромный) — это документоориентированная система управления базами данных (СУБД) с открытым […]

The post MongoDB: Что такое, для чего нужен и где использовать appeared first on HackerX.

]]>
В этой статье мы познакомимся с NoSQL базой данных MongoDB, узнаем когда можно использовать MongoDB и чем он отличается от остальных СУБД.

Для серверной JavaScript, то есть для Node.js, самым естественным хранилищем данных является документо-ориентированная база данных MongoDB. Давайте рассмотрим подробнее, почему именно MongoDB.

Что такое MongoDB

MongoDB (от англ. humongous — огромный) — это документоориентированная система управления базами данных (СУБД) с открытым исходным кодом, который написана на языке C++ и не требует описание схемы таблиц. MongoDB классифицирована как NoSQL база данных с JSON-подобными документы (точнее BSON — Binary JavaScript Object Notation). То есть, она реализует новый подход к построению базы данных. Используя MongoDB, у вас не будет таблиц, схем, SQL запросов, внешних ключей и много других вещей, которые встречаются в SQL базах.

По мнению разработчиков сервера базы данных MongoDB, она должна заполнить разрыв между NoSQL СУБД, где данные хранится в виде key-value (ключ-значение), и большими реляционными СУБД, где есть мощные запросы и структурные схемы. Она имеет некоторые важные преимущества по сравнению с обычными СУБД — с ней легко работать, очень просто управляется за счет применение бессхемного стиля и очень быстро работает.

Один из важных преимуществ — это то, что функциональность MongoDB позволяет на нескольких физических серверах расположить несколько базы данных, и эти базы легко могут обмениваться данными между собой и сохранить цельность. Конечно, есть и небольшие недостатки:

  • MongoDB документо-ориентированная база данных, но за это нам приходится платить. В отличие от традиционных СУБД, здесь нет оператора join.
  • Нет такого понятие, как транзакция.
  • Отсутствует понятие изоляции.

Это маленькие ограничение, которые здесь решаются другими способами. Об этих способах в дальнейшем я расскажу. А теперь давайте подробно рассмотрим где и почему вам понадобится использовать эту СУБД.

Для чего нужен MongoDB




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

На первый взгляд кажется, что данная задача проста и его можно реализовать используя обычные базы данных. Для этого нам нужно иметь три таблицы в БД и все. Но рок музыканты очень часто меняют или покидают свои коллективы, иногда играют сразу в трех составах. Бывает возвращаются в группу и тем временем записывают сольные альбомы, привлекают для этого дела других коллег. Как видите, здесь все запутано и не так просто, как казалось.

А по поводу дискографии, здесь тоже все страшно — приглашенные музыканты, совместные альбомы, сборники, записи сейшенов…

Эту информацию можно представить с помощью реляционной модели, но у нас получится сложная схема с большими и сложными запросами к ней. И от этого упадет производительность. А что будет, если этот запрос будет вызываться 100 раз в минуту?

В Mongo данная проблем реализуется очень просто, запросы к БД будут работа намного быстрее, производительность не упадет, практически все данные будут в одном месте. Более подробно обо всем этом будем разбираться в следующих уроках.

The post MongoDB: Что такое, для чего нужен и где использовать appeared first on HackerX.

]]>
https://hackerx.ru/chto-takoe-mongodb/feed/ 0
Вставка документов (insert) — MongoDB CRUD https://hackerx.ru/insert-documents-mongodb-crud/ https://hackerx.ru/insert-documents-mongodb-crud/#respond Sun, 30 Jul 2017 03:01:01 +0000 https://hackerx.ru/?p=268 Метод db.collection.insert() служит для вставки / добавление новых документов (данных) в коллекцию. После запуска оболочки MongoDB, если вы не выбрали базу, то по умолчанию оболочка выберет базу test. Если хотим создать новую базу в MongoDB, например blog, и переключится на него, то в консоле (в оболочке MongoDB) нужно выполнить следующую команду: use blog После этого увидим сообщение что мы переключились на базу […]

The post Вставка документов (insert) — MongoDB CRUD appeared first on HackerX.

]]>
Метод 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 а значение генерируется автоматически и он всегда уникален.

The post Вставка документов (insert) — MongoDB CRUD appeared first on HackerX.

]]>
https://hackerx.ru/insert-documents-mongodb-crud/feed/ 0