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()
cur.next()
Полезные методы:
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 по убыванию
2 минуты
11 декабря 2023