
MongoDB — документоориентированная система управления базами данных, не требующая описания схемы таблиц. Считается одним из классических примеров NoSQL-систем, использует JSON-подобные документы и схему базы данных. Написана на языке C++. Применяется в веб-разработке, в частности, в рамках JavaScript-ориентированного стека MEAN.
📁 Коллекция
Коллекция в MongoDB — это аналог таблицы в реляционных БД.
- Содержит набор документов.
- Все документы внутри коллекции могут иметь разную структуру.
- Примеры коллекций:
users
,products
,orders
.
📄 Документ
Документ — это основная единица хранения данных в MongoDB. Он похож на строку в таблице SQL, но с большей гибкостью.
- Представлен в формате JSON / BSON.
- Пример:
{
"name": "Maria",
"age": 25,
"hobbies": ["reading", "music"]
}
- Каждый документ автоматически получает уникальный идентификатор
_id
.
Команды MongoDB и использование MongoDB Compass
Создаем новое подключение –> Save & Connect


Будем использовать команды через консоль MongoDB Shell
- show databases – показывает все имеющиеся базы данных
- use mongo – создает базу данных ‘mongo’
- db.createCollection(“users”) – создает коллекцию ‘users’ в базе данных ‘mongo’
- db.dropDatabase() – удаляет базу данных



Добавление пользователей в коллекцию
- db.users.insert() – может вставить один или несколько документов
- db.users.insertOne() – вставляет только один документ
- db.users.insertMany() – вставляет несколько документов за раз
db.users.insert({
name:"ulbitv",
age:25
})

db.users.insertMany([
{name: "maria", age:28},
{name: "andrei", age:25},
{name: "anna", age:22},
{name: "dima", age:29},
{name: "anton", age:35},
{name: "irina", age:31}
])

Поиск документов, поиск по критериям и сортировка
db.users.find() – найти созданных пользователей в коллекции ‘users’

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

db.users.find({age:25}) – поиск по критерию (например поиск по возрасту)

db.users.find({ $or: [ { name: “anna” }, { age: 25 } ] }) – поиск пользователей , у которых имя – “anna” или возраст – 25.
- $or – или
- $and – и
- $not – не
- $nor – ни то, ни другое

db.users.find({age:{$lt:28}}) – поиск пользователей, возраст которых меньше 28 лет
- $lt – меньше <
- $gt – больше >
- $lte – меньше или равно <=
- $gte – больше или равно >=
- $ne – не равно !=

db.users.find().sort({age:-1}) – сортировка
- -1 –> по убыванию
- 1 –> по возрастанию

db.users.find().limit(4) – выводит первые 4 документа из коллекции users
.

db.users.findOne({_id:ObjectId(“682d8352be871c6063cda6b9”)}) – находит один документ в коллекции users
, у которого поле _id
равно указанному значению

- db.users.update() – обновляет один документ по умолчанию, но может обновлять и несколько (с опцией
multi: true
) - db.users.updateOne() – обновляет только один документ, подходящий под фильтр
- db.users.updateMany() – обновляет все документы, подходящие под фильтр
db.users.update(
{name:"anna"},
{
$set: {
name: "ilon mask",
age:45
}
}
)

Проверка:

db.users.updateMany(
{},
{
$rename: {
name: "fullname",
}
}
)

Проверка:
Изменилось названия поля name на fullname

db.users.deleteOne({age:29}) – удаление

db.users.bulkWrite() – команда массового выполнения операций записи — таких как insert, update, delete, replace — в одном запросе
Нового пользователя добавляем и другого удаляем
db.users.bulkWrite([
{
insertOne: {
document: {fullname: "maria", age:28}
}
},
{
deleteOne: {
filter: {fullname: "andrei"}
}
}
])

Этот запрос находит пользователя с fullname: “anton” и заменяет его поле posts на массив из двух постов.
db.users.update(
{fullname: "anton"},
{
$set: {
posts: [
{title: 'javascript', text: 'js top'},
{title: 'mongodb', text: 'mongo database'}
]
}
}
)

Проверка:

Так же можно проверить в графической оболочке

Ищет один документ, где fullname
равен "anton"
.
Возвращает только поле posts
(и _id
по умолчанию).
db.users.findOne(
{fullname: "anton"},
{posts:1}
)

Ищет всех пользователей, у которых в массиве posts
есть хотя бы один элемент, где поле title
равно "javascript"
db.users.find(
{
posts: {
$elemMatch: {
title: "javascript"
}
}
}
)

db.users.find({posts: {$exists: true}}) – находит тех пользователей, у которых есть посты
Подключение базы данных MongoDB Cloud через Node.js
Создаем новый проект в WebStorm и выбираем Node.js

Открываем терминал и прописываем команды:
- npm init -y – создаёт
package.json
файл с настройками по умолчанию для проекта Node.js,-y
означает “yes to all” - npm i mongodb / npm install mongodb – устанавливает официальную библиотеку MongoDB для Node.js.


Открываем package.json и проверяем установился ли mongodb

Создаем аккаунт или заходим в MongoDB Cloud, далее заходим в Clusters и создаем новый кластер.

IP адрес вводим 0.0.0.0/0 и вводим username и password

Выбираем тип подключения –> Drivers

Копируем ссылку для подключения базы данных к Node.js
mongodb+srv://user123:@cluster0.dbvqdrq.mongodb.net/?retryWrites=true&w=majority&appName=Cluster0

Создаем фаил indexjs.js и пишем данный код, в MongoClient всматвляем ссылку подключения из MongoDB Cloud и <db_password> меняем и вписываем свой созданный пароль.
const { MongoClient } = require('mongodb');
const client = new MongoClient('mongodb+srv://mariasmolina:qwerty123@cluster0.dnzydj9.mongodb.net/?retryWrites=true&w=majority&appName=Cluster0')
const start = async () => {
try {
await client.connect();
console.log('Соединение установлено')
} catch (e) {
console.log(e)
}
}
start()

База данных подключена, теперь мы можем создать коллекцию и добавить в неё пользователей.
const { MongoClient } = require('mongodb');
const client = new MongoClient('mongodb+srv://mariasmolina:qwerty123@cluster0.dnzydj9.mongodb.net/?retryWrites=true&w=majority&appName=Cluster0')
const start = async () => {
try {
await client.connect();
console.log('Соединение установлено')
await client.db().createCollection('users')
const users = client.db().collection('users');
await users.insertOne({name: 'kate', age: 21})
const user = await users.findOne({name: 'kate'})
console.log(user)
} catch (e) {
console.log(e)
}
}
start()

Проверяем через графическую оболочку в MongoDB Cloud
