Найти в Дзене
13 подписчиков

MongoDB — краткий конспект


Небольшой краткий конспект по теме.

MongoDB — относится к категории NoSQL баз данных.
Хранит данные в формате BSON
Внутри себя представляет следующую структуру:

Server

Database
— Collection1
— Document1
— Document2
— Collection2
— Document
Пример документа:

{
"_id": 1,
"name": { "first" : "John", "last" : "Backus" },
"contribs": [ "Fortran", "ALGOL", "Backus-Naur Form", "FP" ],
"awards": [
{
"award": "W.W. McDowell Award",
"year": 1967,
"by": "IEEE Computer Society"
}, {
"award": "Draper Prize",
"year": 1993,
"by": "National Academy of Engineering"
}
]
}

JSON vs BSON

Кодировка: JSON использует UTF-8 String, BSON — бинарные данные
Типы данных: JSON (String, Boolean, Number, Array, Object, null), BSON (String, Boolean, Number (Integer, Float, Long, Decimal128…), Array, null, Date, BinData)
Читабельность: JSON (Понятен человеку), BSON (хранит закодированные данные в бинарном формате)
ObjectId — для хранения айди документов, генерится автоматически, вшита временная метка (удобно для сортировки по дате создания)

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

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

mongosh — утилита для работы в терминале с монгой

show dbs — вывод всех баз данных на сервере
use shop — переключиться или создать базу данных

CRUD:

insertOne — вставляет 1 объект в коллекцию

insertMany — вставляет массив объектов в коллекцию
db.products.insertOne({
name: "Тестовая футболка",
type: "Футболка",
color: "белый",
sizes: ["L", "M"],
number: 8,
reviews: [{
author: "Roma",
text: "Great stuff"
}]
})
db.products.insertMany([{
name: "Тестовая вещь",
type: "Футболка",
color: "белый",
sizes: ["L"],
number: 9,
reviews: [{
author: "Roma2",
text: "Great stuff"
}]
},
{
name: "Тестовая вещь2",
type: "Футболка",
color: "белый",
sizes: ["L"],
number: 123,
reviews: [{
author: "Roma2",
text: "Great stuff"
}]
}])

Курсор — указатель на документ, возвращает null — если документа нет.

const cur = db.products.find()

Полезные методы:

db.products.find().limit(1) — означает, что мы можем получить только 1 документ
db.products.find().skip(1) — означает с какого документа начинать выводить данные

db.products.find().sort({number : 1}) — сортирует документы по ключу number от меньшего к большему
db.products.find().sort({number : -1}) — сортирует документы по ключу number по убыванию
MongoDB — краткий конспект  Небольшой краткий конспект по теме.  MongoDB — относится к категории NoSQL баз данных.
2 минуты