Как выполнять операции CRUD в MongoDB

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

MongoDB – это база данных с открытым исходным кодом NoSQL, доступная для использования во всех операционных системах.

Если вы изучали проектирование баз данных в школе, скорее всего, вы не научились использовать MongoDB или не приобрели большого опыта работы с базами данных NoSQL. Это неудивительно – до 1998 года многие люди даже не слышали о NoSQL, и только в 2009 году базы данных NoSQL начали набирать обороты.

Что такое NoSQL?

Аббревиатура SQL означает «язык структурированных запросов». SQL используется для выполнения математических операций с данными, хранящимися в базах данных, которые жестко структурированы по строкам и столбцам (таблицам).

Аббревиатура NoSQL, в зависимости от того, кого вы спросите, означает «не только SQL» или «не SQL». Однако есть один факт, с которым все могут согласиться: NoSQL используется для выполнения операций с данными, которые хранятся в базах данных, не структурированных по строкам и столбцам.

Существует несколько баз данных NoSQL, но имя, которое стоит выше остальных, – MongoDB. Фактически, некоторые люди думают, что MongoDB – единственная база данных в своем роде.

Что такое MongoDB?

NoSQL поддерживает четыре различных типа баз данных: документы, хранилища ключей и значений, ориентированные на столбцы и графы. MongoDB – это база данных документов, поскольку она хранит данные в документе, подобном JSON, и, как и все базы данных, поддерживает все основные операции CRUD.

Связанный: Как база данных MongoDB может лучше организовать ваши данные

Что такое CRUD-операции?

Аббревиатура CRUD означает «создавать, читать, обновлять и удалять». CRUD представляет четыре основных функциональных требования всех баз данных. Если вы используете базу данных, которая не позволяет создавать, читать, обновлять или удалять записи, то это не база данных.

Скачать MongoDB

Прежде чем вы сможете выполнять какие-либо операции CRUD в MongoDB, вам необходимо загрузить и установить MongoDB на свое устройство (или использовать доступную облачную версию), запустить сервер MongoDB, подключиться к нему и, наконец, создать новую базу данных.

Сервер MongoDB можно загрузить с официального сайта MongoDB .

Запуск сервера MongoDB

Запустите сервер MongoDB из консоли вашей IDE.

 
/Users/Administrator/mongodb/bin/mongod.exe --dbpath=/Users/Administrator/mongodb-data

Приведенный выше код запускает сервер MongoDB. Первая половина предоставляет прямой путь к исполняемому файлу MongoDB (mongod.exe), который хранится на вашем устройстве. Путь на вашем устройстве должен быть другим, но цель состоит в том, чтобы добраться до файла mongod.exe в папке bin.

Вторая половина кода (разделенная пробелом) – это еще один путь. Этот путь ведет к «mongodb-data», файлу, который вам нужно создать самостоятельно. Этот файл будет содержать все данные, которые созданы в нашей базе данных.

Наш файл называется «mongodb-data», но имя может быть любым, как вы считаете подходящим.

Выполнение приведенного выше кода должно привести к появлению нескольких строк кода, но две строки, на которые нужно обратить пристальное внимание, можно увидеть ниже:

 
{"t":{"$date":"2021-04-14T18:10:11.779-05:00"},"s":"I", "c":"NETWORK", "id":23015, "ctx":"listener","msg":"Listening on","attr":{"address":"127.0.0.1"}}
{"t":{"$date":"2021-04-14T18:10:11.797-05:00"},"s":"I", "c":"NETWORK", "id":23016, "ctx":"listener","msg":"Waiting for connections","attr":{"port":27017,"ssl":"off"}}

Эти две строки содержат localhost и порт по умолчанию для сервера MongoDB соответственно. Эти два числа понадобятся позже для создания подключения к серверу MongoDB, чтобы мы могли выполнять наши операции CRUD.

Выполнение операций CRUD

Теперь, когда наш сервер MongoDB запущен и работает, мы можем подключиться к нему (используя соответствующий драйвер) и начать выполнение операций CRUD. В этой статье мы создадим простую базу данных пользователей, в которой будут храниться имена и возраст наших пользователей.

Создание пользователя

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

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

Пример метода MongoDB insertOne

 
// import mongodb and use destructuring to get the MongoClient function
const { MongoClient } = require("mongodb");
//the connection URL and the database that we intend to connect to
const connectionURL = 'mongodb://127.0.0.1:27017';
const databaseName = 'user-manager';
//using the connect function on the MongoClient to connect to the MongoDB server
MongoClient.connect(connectionURL, { useUnifiedTopology: true }, (error, client) =>{
//check if connection was established
if (error){
return console.log('Could not connect to database');
}
//access the user-manager database
const db = client.db(databaseName);
//insert one user into the database
db.collection('users').insertOne({
name: 'John Doe',
age: '28'
}, (error,result) =>{
if (error){
return console.log('Could not create user');
}
console.log(result.ops);
})
})

Прежде чем мы сможем создать каких-либо пользователей, необходимо установить соединение с сервером MongoDB с помощью драйвера MongoDB того языка, который вы используете. Самый популярный драйвер, который мы используем в этом руководстве, – это драйвер NodeJS.

С помощью первой строки нашего кода выше мы можем использовать метод деструктуризации для получения функции MongoClient с нашего сервера.

MongoClient принимает три аргумента:

  • URL-адрес (используется для подключения к серверу MongoDB)
  • Параметры / Настройки (которые в данном случае устанавливают для переменной useUnifiedTopology значение true, чтобы облегчить использование нового механизма обнаружения и мониторинга серверов)
  • Функция обратного вызова, которая принимает два аргумента (ошибка и клиент).

В рамках функции обратного вызова метода MongoClient мы наконец можем вставить пользователя в нашу базу данных. Но прежде чем мы дойдем до этого момента, нам нужно получить доступ к базе данных диспетчера пользователей.

Одно из преимуществ использования MongoDB заключается в том, что нет необходимости явно создавать базу данных. Как только ссылка на конкретную базу данных сгенерирована с использованием аргумента «клиент» (как показано в приведенном выше коде), вы можете начать манипулировать ею.

Ссылка на созданную нами базу данных диспетчера пользователей хранится в переменной «db», которую мы будем использовать для вставки нашего первого пользователя в базу данных.

Используя ссылку «db», мы можем создать новую коллекцию, которой присвоим имя «пользователь».

Метод insertOne принимает два обязательных аргумента; документ (пользователь) и функция обратного вызова. С помощью метода insertOne мы можем вставить пользователя по имени Питер Дэвис в возрасте 32 лет в нашу базу данных.

Функция обратного вызова принимает два аргумента (ошибка и результат). Функция result содержит метод ops, который мы используем, чтобы увидеть пользователя, которого мы только что создали в нашей базе данных. После выполнения приведенного выше кода в консоли будет получен следующий вывод:

 
[ { name: 'Peter Davis', age: '32', _id: 60772f869475e84740003c45 } ]

Хотя при создании пользователя мы предоставили только два поля, из приведенных выше выходных данных видно, что было создано третье поле. Это еще одна интересная особенность MongoDB; он автоматически генерирует уникальный идентификатор для каждого создаваемого документа.

Связанный: Чем отличается моделирование данных в MongoDB?

Чтение пользователя в MongoDB

Для чтения документов из MongoDB используются два основных метода: find и findOne . Метод find используется для одновременного чтения нескольких документов, а метод findOne используется для чтения одного документа за раз.

Пример метода MongoDB findOne

 
// import mongodb and use destructuring to get the MongoClient method
const { MongoClient } = require("mongodb");
//the connection URL and the database that we intend to connect to
const connectionURL = 'mongodb://127.0.0.1:27017';
const databaseName = 'user-manager';
//using the connect function on the MongoClient to connect to the MongoDB server
MongoClient.connect(connectionURL, { useUnifiedTopology: true }, (error, client) =>{
//check if connection was established
if (error){
return console.log('Could not connect to database') ;
}
//create the user-manager database
const db = client.db(databaseName);
//finding one user into the database
db.collection('users').findOne({name: 'Peter Davis'}, (error, user) => {
if (error){
return console.log('Could not find user');
}
console.log(user);
})
});

Следует помнить, что вам всегда нужно подключаться к серверу MongoDB и соответствующей базе данных, прежде чем вы сможете выполнять какие-либо операции CRUD (как показано в нашем примере выше).

Метод findOne принимает два обязательных аргумента. Первый аргумент содержит критерии поиска; вы можете искать документ, используя любое уникальное имя переменной. В нашем примере выше мы используем имя «Питер Дэвис».

Второй аргумент метода findOne – это функция обратного вызова, которая принимает два аргумента; первый – это ошибка, если документ не может быть найден, а второй – это документ (который мы назвали «пользователь»).

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

 
{ _id: 60772f869475e84740003c45, name: 'Peter Davis', age: '32' }

Обновление пользователя в MongoDB

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

MongoDB updateOne Пример метода

 
//Update a user's age
db.collection('users').updateOne({ name: "Peter Davis"},
{
$set: {
age: '24'
}
})

С помощью приведенного выше кода мы можем обновить возраст Питера Дэвиса до 24 лет.

Удаление пользователя в MongoDB

Есть два метода удаления документа из MongoDB. Метод deleteOne используется для удаления одного документа, а метод deleteMany используется для удаления нескольких документов.

Пример метода MongoDB deleteOne

 
//delete a document
db.collection('users').deleteOne({ name: 'Peter Davis'})

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

Теперь вы можете выполнять операции CRUD в MongoDB

Теперь у вас есть базовые знания о MongoDB и вы знаете, что означает NoSQL. Вы также знаете, что означает аббревиатура CRUD и почему эти операции являются важными качествами каждой базы данных.

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

Кредит изображения: Александр Сослуев / WiKiMedia Commons