MongoDB. Урок 6. Удаление модели


Содержание материала:

MongoDB. Урок 6. Удаление модели

Для удаления документов в MongoDB предусмотрен метод remove :

Метод remove() возвращает объект WriteResult. При успешном удалении одного документа результат будет следующим:

В итоге все найденные документы с name=Tom будут удалены. Причем, как и в случае с find, мы можем задавать условия выборки для удаления различными способами (в виде регулярных выражений, в виде условных конструкций и т.д.):

Метод remove также может принимать второй необязательный параметр булевого типа, который указывает, надо удалять один элемент или все элементы, соответствующие условию. Если этот параметр равен true , то удаляется только один элемент. По умолчанию он равен false:

Чтобы удалить разом все документы из коллекции, надо оставить пустым параметр запроса:

Удаление коллекций и баз данных

Мы можем удалять не только документы, но и коллекции и базы данных. Для удаления коллекций используется функция drop :

И если удаление коллекции пройдет успешно, то консоль выведет:

Чтобы удалить всю базу данных, надо воспользоваться функцией dropDatabase() :

MongoDB Подробное руководство

MongoDB состоит из: БД, которые состоят из коллекций. Коллекции, в свою очередь, состоят из документов. Каждый документ состоит из полей. www.mongodb.com

MongoDB клиенты

Конфиг

В папке bin создайте файл и назовите его mongodb.config .

Указываем в этом файле путь, где будем хранить БД, например, для windows: dbpath=c:\mongodb\data

Запуск

  • mongod — это сервер
  • mongo — клиентская консоль

Стартуем mongod (сервер):

Команда mongo позволяет подключиться к запущенному серверу (стартуем mongo оболочку/shell).

Работа с БД

Выводим все БД в mongo:

Переходим (и одновременно создаем) к нужной БД

Команды db возвращает имя БД, внутри которой мы сейчас находимся:

Коллекции

Показать все коллекции в БД

Метод find()

Показать весь контент нужной коллекции

Метод pretty выводит результат в удобном для чтения виде.

Метод count()

Метод count выводит количество документов в коллекции:

Метод remove()

Метод remove используется, чтобы удалить документ из коллекции (или всю коллекцию).

Метод insert()

Заносим данные в коллекцию band (и, видимо, создаем тем самым коллекцию band , если ее нет):

Добавим составы в коллекцию band :

Мы можем добавлять данные, не декларируя их предварительно: свойство members . Отсутствует схема: легко добавили массив объектов.

Модификация данных

Оператор $set

Оператор $set заставляет команду update модифицировать лишь те ключи, которые ему переданы (см. пример выше).

Оператор $unset

Оператор $unset удаляет указанный ключ

Оператор $inc

Оператор $inc увеличивает значение поля на указанную величину

Оператор $rename

Оператор $rename позволяет переименовать поля

Индексы

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

Индексы – это специальные структуры данных, которые хранят небольшие части данных в форме, которая легко распознаётся. Они хранят значение определённого поля или набора полей, упорядоченных по значению поля, указанному в индексе.

Построим индекс по ключу bid :

ensureIndex устарел, начиная с версии 3.0, в данный момент является псевдонимом для db.collection.createIndex() .

Схемы и модели

Схемы определяют структуру документов внутри коллекции, а модели используются для создания копий данных, хранящихся в документах.

I Основы

  • 1. Внутри MongoDB может быть ноль или более баз данных.
  • 2. База данных может иметь ноль или более «коллекций». (коллекция практически тоже что и таблица)
  • 3. Коллекции состоят из нуля или более «документов». Опять же, документ можно рассматривать как «строку».
  • 4. Документ состоит из одного или более «полей», которые — как можно догадаться — подобны «колонкам».
  • 5. «Индексы» в MongoDB почти идентичны таковым в реляционных базах данных.
  • 6. Важно понимать, что когда мы запрашиваем у MongoDB какие-либо данные, то она возвращает курсор, с которыми мы можем делать все что угодно.

Но есть отличия:

Основное различие в том, что реляционные базы данных определяют «колонки» на уровне «таблицы», в то время как документ-ориентированные базы данных определяют «поля» (в реляционных «колонки») на уровне «документа» (в релационных «запись»).

В конечном счёте дело в том, что коллекция не содержит информации о структуре содержащихся в ней данных. Информацию о полях содержит каждый отдельный документ.

Метод insert

Мы не обязаны создавать коллекции явно. Мы просто можем вставить документ в новую коллекцию. Чтобы это сделать, используйте команду insert , передав ей вставляемый документ:

Селекторы запросов

Селектор запросов MongoDB (это JSON-объект) аналогичен предложению where SQL-запроса. Как таковой он используется для поиска, подсчёта, обновления и удаления документов из коллекций.

Селектор — это JSON-объект, в простейшем случае это может быть даже <> , что означает выборку всех документов (аналогичным образом работает null ). Если нам нужно выбрать всех единорогов (англ. «unicorns») женского рода, можно воспользоваться селектором .

<поле: значение>используется для поиска всех документов, у которых есть ‘поле’ и у него есть ‘значение’.

Оператор $lt, $lte, $gt, $gte, $ne

Специальные операторы $lt , $lte , $gt , $gte и $ne используются для выражения операций «меньше», «меньше или равно», «больше», «больше или равно», и «не равно».

Топ-пост этого месяца:  Личный бренд создание, продвижение и развитие с нуля

Пример использовани селекторов с командой find (но также селекторы могут быть использованы с remove , count , update ):

Например, чтобы получить всех самцов единорога, весящих более 700 фунтов, мы можем написать:

Оператор $exists

Оператор $exists используется для проверки наличия или отсутствия поля, например:

Оператор $or

Оператор $or используется как ИЛИ

Поле loves это массив. MongoDB поддерживает массивы как объекты первого класса. Самое интересное это та простота, с которой делается выборка по значению массива: вернёт нам все документы, у которых watermelon является одним из значений поля loves .

Оператор $where

Оператор $where (в след. разделах)

Самый гибкий оператор — $where , позволяющий нам передавать JavaScript для его выполнения на сервере.

Оператор ObjectId

ObjectId, сгенерированный MongoDB для поля _id, подставляется в селектор следующим образом:

II update

В простейшей форме, update принимает 2 аргумента: селектор для выборки и то, чем обновить соответствующее поле. Второй параметр используется для полной замены оригинала:

По умолчанию, update обновляет лишь первый найденный документ

Модификатор $set

Модификатор $set обновляет конкретные поля, а не весь документ.

Если вам нужно всего лишь изменить пару полей, лучше всего использовать модификатор $set :

Другие модификаторы, которые действуют непосредственно на поля, а не на весь документ:

модификатор $inc

модификатор $inc — увеличить или уменьшить значение поля.

модификатор $push — позволяет добавить данные в массив

Обновление/вставка (при отсутствии элемента)

Не забывайте использовать модификатор $set , если вам нужно обновить лишь некоторые поля.

Разрешаем вставку при обновлении (3-й параметр)

Чтобы разрешить вставку при обновлении (если элемент не будет найден), установите третий параметр в true .

Вставки и обновления не будет, так как 3-й параметр опущен, а документа с отсутствует в коллекции.

Поскольку документы с полем page , равным unicorns , не существуют, то будет создан новый документ. Если выполнить это вторично, существующий документ будет обновлён, и поле hits увеличится до 2.

Одновременно создастся коллекция hits , если она отсутствует.

Множественные обновления (4-й параметр)

Чтобы обновить множество документов нужно установить четвертый параметр в true :

Этим мы обновили все поля добавив везде поле vaccinated со значением true


III Команда find (курсор)

Курсор базы данных — это объект БД, который позволяет приложениям работать с записями «по-одной», а не с множеством сразу. То есть курсор (как мы помним это объект), который позволяет передвигаться по выборке (назад на одно, вперед на одну, в конец/начало) при помощи своих методов.

Как уже упоминалось, результатом find является курсор. Второй необязательный параметр у find это список полей, которые мы хотим получить.

_id по умолчанию возвращается всегда. Но мы можем исключить _id следующим образом: .

Получаем все поля, кроме поля name :

Как уже упоминалось, результатом find является курсор. Поэтому мы можем присоединить к нему ряд методов:

Сортировка (метод sort)

Синтаксис метода sort: мы указываем поля, по которым надо сортировать, используя 1 для сортировки по возрастанию и -1 для сортировки по убыванию. Например:

Но для сортировки большого объема данных в Mongo необходимо использовать индексы.

Метод limit()

Метод skip()

Метод skip() позволяет пропустить определенное количество записей.

Обратите внимание как мы соединяем методы в цепочки.

Моделирование данных

MongoDB не поддерживает JOIN . По существу мы должны делать второй запрос, чтобы найти связанные данные.

p.s: Для создания нового ObjectID используется следующий код: NewObject >

Когда требуется смоделировать отношения «один-ко-многим» или «многие-ко-многим» можно использовать массивы ( в MongoDB массивы это объекты первого класса).

При этом данный find сработает:

Массивы значений намного удобнее в использовании, нежели таблицы связи «многие-ко-многим»

Вложенные документы

MongoDB поддерживает вложенные документы:

Вложенные документы можно запрашивать с помощью точечной нотации:

Денормализация

Традиционный путь ассоциировать пользователя с его постом — это колонка userid в таблице posts . С такой моделью нельзя отобразить список постов без дополнительного извлечения данных (JOIN) из таблицы пользователей. Возможное решение — хранить имя пользователя ( name ) вместе с userid для каждого поста.

Команды (выжимка)

Подключение mongoDB в nodejs

Mongoose

ODM – Object-Document Mapper (объектно-документное отображение). У mongo нет жесткой структуры, а вот Mongoose позволяет нам ввести понятие схемы.

Установка и подключение

Схема

Схема в Mongoose определяет метаданные модели — ее свойства, типы данных и ряд другой информации.

Типы схем

Модель

http://mongoosejs.com/docs/models.html Модели — это конструкторы, составленные из определения нашей схемы. Экземпляры модели представляют собой документы, которые могут быть сохранены и извлечены из нашей БД.

Первый параметр в методе mongoose.model указывает на название модели, а второй параметр — собственно схема.

Поиск

Сохраняем объект в БД

Редактирование и удаление

С mongo можно использовать Promise от node.

mlab.com

mlab.com — это облачный сервис по предоставлению БД mongoDB.

  • Создаем БД
  • Добавляем пользователя
  • И подключаемся в своем приложении:

CRUD — (create, read, update, delete — «создание, чтение,обновление, удаление») — 4 основные функции, используемые при работе базами данных.

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

# Используем Mongoose для работы с Mongodb

В этом видео мы с вами разберем что такое пакет mongoose в nodejs. Для этого урока у вас должна быть установлена mongodb и node.

Итак mongoose — это ORM для базы данных mongodb для node. Для тех кто не знает, что такое ORM — это Object-relational mapping. То есть идея состоит, например, чтобы работать с mongodb в node мы могли бы использовать mongodb драйвер. Это очень низкоуровневая библиотека, которая просто дает возможность делать обращения к базе. ORM же позволяет создавать модели и зависимости между ними и использовать специальный API для работы с базой. Это, конечно, не так гибко, как выполнять запросы к базе напрямую, но дает возможность лучше структурировать ваш код.

У меня создан пустой проект в который я установил 2 пакета: mongoose и bluebird.

Пакет bluebird — это библиотека для промисов. Здесь она нам понадобится, чтобы указать mongoose, какие промисы нужно использовать.

Также, не забудьте, что вам нужно запустить процесс mongodb. Например на mac я его запускаю в консоли командой mongod.

Итак у меня есть index.js файл и в него давайте зарекваирим mongoose.

После этого мы хотим указать mongoose правильные промисы.

Если вы не напишите эту строчку, то получите много варнингов от mongoose в консоли.

Далее мы хотим подключится к нашей базе mongodb. Это можно сделать с помощью команды connect.

Первым параметром мы указываем host и название базы. Вторым параметром опции для connect.

После коннекта мы можем получить из mongoose connection, с которым мы дальше будем работать.

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

Если мы попробуем остановить процесс mongodb и запустить сервер, то мы получим ошибку, которую мы увидим именно из-за подписки на on error.

Топ-пост этого месяца:  Повышают ли SVG-изображения производительность сайта

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

Если мы перезапустим вебсервер и посмотрим в консоль, то у нас должнo вывестить «we are connected».

Теперь мы готовы к использованию mongoose.

Так как вся логика работы с mongoose построена на моделях, то нам нужно создать модель, с которой мы хотим работать. Давайте создадим модель User в отдельном файле models/user.

Сначала мы импортируем пакет mongoose и описываем схему нашего usera. У нас будет одно поле name, типа String. После этого мы должны из схемы создать модель. В этом нам поможет mongoose.model. И экспортируем ее, чтобы использовать в других местах.

Теперь давайте импортируем ее в index.js

Теперь мы можем работать с моделью, а не с mongodb напрямую. Например, давайте создадим нового юзера.

Мы просто создаем экземпляр модели и передаем на вход нужные параметры. Если мы посмотрим в консоль, то у нас в обьекте автоматически сгенерировалось id. Оно нам нужно для сохранения в базу.

Но new User в базу ничего не сохраняет. Теперь, если мы хотим сохранить этого юзера в базу, то мы должны на экземпляре вызвать метод save.

Если мы посмотрим в консоль, то наш user был успешно сохранен.

Теперь давайте попробуем найти этого юзера по id. Для этого давайте закомментим создание и напишем.

Mongoose предоставляет нам специальный метод, для поиска записи по id. Обратите внимание, что мы не указываем из какой коллекции брать данные. Mongoose сам создает под каждую модель нужную коллекцию и нам остается только использовать правильное API.

Возможности Mongoose достаточно обширны. Вы можете писать достаточно сложные запросы, добавлять к моделям свои собственные методы, генерировать поля по умолчанию, добавлять коллбеки при изменении записей и много другое.

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

Подробное руководство по MongoDB, Mongoose

Введение

MongoDB состоит из БД, которые состоят из коллекций. Коллекции, в свою очередь, состоят из документов. Каждый документ состоит из полей.
www.mongodb.com

MongoDB клиенты

Конфиг mongodb для windows

В папке bin создайте файл и назовите его mongodb.config .

Указываем в этом файле путь, где будем хранить БД, например, для windows:

Запуск

  • mongod — это сервер баз данных MongoDB. Он обрабатывает запросы, управляет форматом данных и выполняет различные операции в фоновом режиме по управлению БД. Командная строка отобразит нам ряд служебной информации, например, что сервер запускается на localhost на порту 27017 .
  • mongo — клиентская консоль для взаимодействия с базами данных.
  • mongodump — утилита создания бэкапа БД.
  • mongorestore — позволяет записывать данные из дампа, созданного mongodump , в новую или существующую БД.

Стартуем mongod (сервер):

Подключаемся к запущенному серверу

Команда mongo позволяет подключиться к запущенному серверу (стартуем mongo оболочку/shell).

Работаем с БД

Выводим все БД в mongo:

Переходим (и одновременно создаем) к нужной БД

Команды db возвращает имя БД, внутри которой мы сейчас находимся:

Коллекции

Показать все коллекции в БД

Метод find()

Показать весь контент нужной коллекции:

Метод pretty выводит результат в удобном для чтения виде.

Метод count()

Метод count выводит количество документов в коллекции:

Метод remove()

Метод remove используется, чтобы удалить документ из коллекции (или всю коллекцию).

Метод insert()

Заносим данные в коллекцию band (создаем тем самым коллекцию band , если ее нет):

Добавим составы груп в коллекцию band :

Мы можем добавлять данные, не декларируя их предварительно: свойство members . Отсутствует схема: легко добавили массив объектов.

Мы не обязаны создавать коллекции явно. Мы просто можем вставить документ в новую коллекцию. Чтобы это сделать, используйте команду insert , передав ей вставляемый документ:


Модификация данных

Оператор $set

Оператор $set заставляет команду update модифицировать лишь те ключи, которые ему переданы (см. пример выше).

Оператор $unset

Оператор $unset удаляет указанный ключ

Оператор $inc

Оператор $inc увеличивает значение поля на указанную величину

Оператор $rename

Оператор $rename позволяет переименовать поля

Индексы

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

Индексы MongoDB – это специальные структуры данных, которые хранят небольшие части данных в форме, которая легко распознаётся. Они хранят значение определённого поля или набора полей, упорядоченных по значению поля, указанному в индексе.

Построим индекс по ключу bid :

ensureIndex устарел, начиная с версии 3.0, в данный момент является псевдонимом для db.collection.createIndex() .

Схемы и модели

Схемы определяют структуру документов внутри коллекции, а модели используются для создания копий данных, хранящихся в документах.

Основы MongoDB

  • 1 Внутри MongoDB может быть ноль или более баз данных.
  • 2 База данных может иметь ноль или более «коллекций» (коллекция практически тоже что и таблица).
  • 3 Коллекции состоят из нуля или более «документов». Опять же, документ можно рассматривать как «строку».
  • 4 Документ состоит из одного или более «полей», которые — как можно догадаться — подобны «колонкам».
  • 5 «Индексы» в MongoDB почти идентичны таковым в реляционных базах данных.
  • 6 Важно понимать, что когда мы запрашиваем у MongoDB какие-либо данные, то она возвращает курсор, с которыми мы можем делать все что угодно.

Отличия MongoDB от реляционных БД

Основное различие в том, что реляционные базы данных определяют «колонки» на уровне «таблицы», в то время как документ-ориентированные базы данных определяют «поля» (в реляционных «колонки») на уровне «документа» (в релационных «запись»).

В конечном счёте дело в том, что коллекция не содержит информации о структуре содержащихся в ней данных. Информацию о полях содержит каждый отдельный документ.

Селекторы запросов

Селектор запросов MongoDB (это JSON-объект) аналогичен предложению where SQL-запроса. Как таковой он используется для поиска, подсчёта, обновления и удаления документов из коллекций.

Селектор — это JSON-объект, в простейшем случае это может быть даже <> , что означает выборку всех документов (аналогичным образом работает null ). Если нам нужно выбрать всех единорогов (англ. «unicorns») женского рода, можно воспользоваться селектором .

<поле: значение>используется для поиска всех документов, у которых есть ‘поле’ и у него есть ‘значение’.

Оператор $lt, $lte, $gt, $gte, $ne

Специальные операторы $lt , $lte , $gt , $gte и $ne используются для выражения операций «меньше», «меньше или равно», «больше», «больше или равно», и «не равно».

Пример использовани селекторов с командой find (но также селекторы могут быть использованы с remove , count , update ):

Например, чтобы получить всех самцов единорога, весящих более 700 фунтов, мы можем написать:

Оператор $exists

Оператор $exists используется для проверки наличия или отсутствия поля, например:

Оператор $or

Оператор $or используется как ИЛИ

Поле loves это массив. MongoDB поддерживает массивы как объекты первого класса. Самое интересное это та простота, с которой делается выборка по значению массива: вернёт нам все документы, у которых watermelon является одним из значений поля loves .

Топ-пост этого месяца:  Применение CSS attr и content для создания подсказки

Оператор $where

Оператор $where (в след. разделах)

Самый гибкий оператор — $where , позволяющий нам передавать JavaScript для его выполнения на сервере.

Оператор ObjectId

ObjectId , сгенерированный MongoDB для поля _id , подставляется в селектор следующим образом:

update

В простейшей форме, update принимает 2 аргумента: селектор для выборки и то, чем обновить соответствующее поле. Второй параметр используется для полной замены оригинала:

По умолчанию, update обновляет лишь первый найденный документ

Модификатор $set

Модификатор $set обновляет конкретные поля, а не весь документ.

Если вам нужно всего лишь изменить пару полей, лучше всего использовать модификатор $set :

Не забывайте использовать модификатор $set , если вам нужно обновить лишь некоторые поля.

модификатор $inc

Модификатор $inc — увеличить или уменьшить значение поля. Модификатор воздействуют непосредственно на поля, а не на весь документ.

Модификатор $push

Модификатор $push — позволяет добавить данные в массив. Модификатор воздействуют непосредственно на поля, а не на весь документ.

Разрешаем вставку при обновлении (3-й параметр)

Обновление/вставка: обновляет документ, если он найден, или создаёт новый — если не найден. Чтобы разрешить вставку при обновлении (если элемент не будет найден), установите третий параметр в true .

Вставки и обновления не будет, так как 3-й параметр опущен, а документа с отсутствует в коллекции.

Поскольку документы с полем page , равным unicorns , не существуют, то будет создан новый документ. Если выполнить это вторично, существующий документ будет обновлён, и поле hits увеличится до 2.

Одновременно создастся коллекция hits , если она отсутствует.

Множественные обновления (4-й параметр)

Чтобы обновить множество документов нужно установить четвертый параметр в true :

Этим мы обновили все поля добавив везде поле vaccinated со значением true

find (курсор)

Курсор базы данных — это объект БД, который позволяет приложениям работать с записями «по-одной», а не с множеством сразу. То есть курсор (как мы помним это объект), который позволяет передвигаться по выборке (назад на одно, вперед на одну, в конец/начало) при помощи своих методов.

Как уже упоминалось, результатом find является курсор. Второй необязательный параметр у find это список полей, которые мы хотим получить.

_id по умолчанию возвращается всегда. Но мы можем исключить _id следующим образом: .

Получаем все поля, кроме поля name :

Как уже упоминалось, результатом find является курсор. Поэтому мы можем присоединить к нему ряд методов:

Сортировка (метод sort)

Синтаксис метода sort: мы указываем поля, по которым надо сортировать, используя 1 для сортировки по возрастанию и -1 для сортировки по убыванию. Например:

Но для сортировки большого объема данных в MongoDB необходимо использовать индексы.

Метод limit()

Метод skip()

Метод skip() позволяет пропустить определенное количество записей.

Обратите внимание как мы соединяем методы в цепочки.

Моделирование данных

MongoDB не поддерживает JOIN . По существу мы должны делать второй запрос, чтобы найти связанные данные.

p.s: Для создания нового ObjectID используется следующий код: NewObject >

Моделируем ‘один-ко-многим’ или ‘многие-ко-многим’

Когда требуется смоделировать отношения «один-ко-многим» или «многие-ко-многим» можно использовать массивы ( в MongoDB массивы это объекты первого класса).

При этом следующий find сработает:

Массивы значений намного удобнее в использовании, нежели таблицы связи «многие-ко-многим»

Вложенные документы

MongoDB поддерживает вложенные документы:

Вложенные документы можно запрашивать с помощью точечной нотации:

Денормализация

Традиционный путь ассоциировать пользователя с его постом — это колонка userid в таблице posts . С такой моделью нельзя отобразить список постов без дополнительного извлечения данных (JOIN) из таблицы пользователей. Возможное решение — хранить имя пользователя ( name ) вместе с userid для каждого поста.

Команды (выжимка)

Подключение MongoDB в Node.js

Mongoose

ODM – Object-Document Mapper (объектно-документное отображение). У MongoDB нет жесткой структуры, а вот Mongoose позволяет нам ввести понятие схемы.

Установка и подключение (работаем через mongoose)

Установка и подключение (работаем через нативный клиент — MongoClient)

Схема

Схема в Mongoose определяет метаданные модели — ее свойства, типы данных и ряд другой информации. mongoosejs.com/docs/guide.html

Типы схем

Модель

Модели (http://mongoosejs.com/docs/models.html) — это конструкторы, составленные из определения нашей схемы. Экземпляры модели представляют собой документы, которые могут быть сохранены и извлечены из нашей БД.

Первый параметр в методе mongoose.model указывает на название модели, а второй параметр — схема.

Сохраняем объект в БД

Кроме метода save() также можно использовать метод Person.create() (см. код ниже). Первый параметр метода — сохраняемый объект.

Поиск (find, findById, findOne)

Методы Для получения данных:

find — возвращает все объекты, которые соответствуют условию фильтрации. find() в качестве первого параметра принимает условие фильтрации; второй параметр метода find() — функция обратного вызова, в которую передаются полученные из БД документы. Если в качестве условия фильтрации передаются пустые фигурные скобки ( <> ), то возвращаются все объекты.

findById — возвращает один объект по значению поля _id . Метод возвращает документ с определенным идентификатором.

findOne — возвращает один объект, который соответствует критерию фильтрации. В отличие от метода find , метод findOne() возвращает один объект.

Редактирование (update, findByIdAndUpdate)

Каждая модель имеет метод update() , который позволяет обновить документы в БД. Первый параметр метода — условие фильтрации. Второй параметр описывает, что и как надо изменить. В функцию обратного вызова передается результат операции.

Нередко для обновления используется фильтрация по _id . И на этот случай мы можем использовать метод findByIdAndUpdate() .

Первый параметр метода findByIdAndUpdate() — значения для поля _id у обновляемого документа, а второй — набор новых значений для полей объекта. В функцию обратного вызова передается обновленный документ.

Удаление (remove, findOneAndRemove)

Для удаления применяется метод remove() . В метод remove() передается критерий фильтрации документов на удаление. Объект, который передается в функцию обратного вызова, содержит информацию об операции удаления.

Метод findOneAndRemove() позволяет удалить один документ. В функцию обратного вызова метод findOneAndRemove() передается удаленный документ.

И частная разновидность этого метода — удаление по полю _id в виде метода findByIdAndRemove() .

Валидация в Mongoose

Mongoose имеет ряд встроенных правил валидации, которые следует указывать в схеме:

  • required — обязательно наличие значения для свойства.
  • min и max — задают минимальное и максимальное значения для числовых данных.
  • minlength и maxlength — задают минимальную и максимальную длину для строк.
  • enum — строка должна представлять одно из значений в указанном массиве строк.
  • match — строка должна соответствовать регулярному выражению.

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

Promise и Mongoose

С MongoDB можно использовать Promise .

С помощью метода then мы можем получить данные, которые возвратил нам сервер и выполнить обработку результата.

mlab.com

mlab.com — это облачный сервис по предоставлению БД mongoDB.

  • Создаем БД
  • Добавляем пользователя
  • И подключаемся в своем приложении:

CRUD — (create, read, update, delete — «создание, чтение,обновление, удаление») — 4 основные функции, используемые при работе базами данных.

Добавить комментарий