MongoDB
Mis on MongoDB?
MongoDB — это база данных, где можно хранить информацию, как в тетрадке или таблице, но в более гибкой и умной форме.
Например, если ты хочешь хранить данные о людях, книгах или продуктах — MongoDB подойдёт отлично.
Mis on kollektsioon (kogu)?
Коллекция (по-английски collection) — это как папка или раздел, где лежат одинаковые типы данных.
Например:
users
— коллекция пользователей;products
— коллекция товаров.
Коллекция = как таблица в Excel, но без строгих правил.
Mis on dokument?
Документ — это одна запись внутри коллекции.
Например, в коллекции users
один документ может выглядеть так:
{
fullname: "Anna",
age: 30
}
Каждый документ — это как одна строка в таблице, но можно добавлять любые поля (даже списки, адреса, посты и т.д.).
Переключение базы данных
use mongo

Переключает тебя на базу данных с именем mongo
. Если такой нет — создастся при первом сохранении данных.
Просмотр всех пользователей
db.users.find()

Показывает все документы (записи) в коллекции users
(пользователи).
Добавление одного пользователя
db.users.insert({
name: "admin",
age: 25,
})

Добавляет одного пользователя с именем admin
и возрастом 25
.insert()
— устарел, лучше использовать insertOne()
.
Добавление сразу нескольких пользователей
db.users.insertMany([
{name: "vasya", age: 25},
{name: "evgeniy", age: 26},
{name: "nikita", age: 28},
{name: "gleb", age: 29},
{name: "Jaan", age: 20}
])

Добавляет сразу несколько записей (пользователей).
Фильтрация по возрасту
db.users.find({age: 25})

Показывает всех, у кого возраст точно 25.
Фильтр: имя ИЛИ возраст
db.users.find({$or: [{name: "admin"}, {age: 20}]}

Показывает всех, у кого имя admin ИЛИ возраст 20.
Меньше чем
db.users.find({age: {$lt: 22}}
)

Показывает всех, кто младше 22 лет. $lt
= less than.
Больше или равно
db.users.find({age: {$gte: 20}})

Показывает всех, кому 20 и больше. $gte
= greater than or equal.
Больше
db.users.find({age: {$gt: 20}})

Показывает всех, кто старше 20. $gt
= greater than.
Сортировка по убыванию
db.users.find().sort({age: -1}
) Показывает всех пользователей, начиная с самого старшего.-1
— по убыванию.

Сортировка по возрастанию
db.users.find().sort({age: 1})

От младших к старшим. 1
— по возрастанию.
Ограничить количество
db.users.find().limit(2)

Показывает только первые 2 записи.
Поиск по ID
db.users.findOne({_id: ObjectId('...')}
)

Ищет одного пользователя по его уникальному идентификатору _id
.
Обновление одного пользователя
db.users.update(
{name: "nikita"},
{$set: {name: "ilon mask", age: 45}}
)

Находит пользователя с именем nikita
и меняет имя на ilon mask
, возраст на 45
.
Переименование поля во всех документах
db.users.updateMany(
{},
{$rename: {name: "fullname"}}
)

Переименовывает поле name
в fullname
у всех пользователей.
Удаление одной записи
db.users.deleteOne({age: 25})

Удаляет одного пользователя с возрастом 25
.
Пакетная операция (bulkWrite)
db.users.bulkWrite([
{
insertOne: {
document: {fullname: "gleb", age: 29}
}
},
{
deleteOne: {
filter: {fullname: "vasya"}
}
}
])

Делает сразу две операции:
- Добавляет одного пользователя
gleb
; - Удаляет пользователя
vasya
.
Обновление документа — добавление массива posts
db.users.update(
{fullname: "gleb"},
{
$set: {
posts: [
{title:'javascript', text:'js top'},
{title:'mongo', text:'mongo database'}
]
}
}
)

Пользователю gleb
добавляется массив posts
(посты).
Найти только поле posts
у одного
db.users.findOne({fullname: "gleb"}, {posts: 1})

Показывает только поле posts
у пользователя gleb
.
Найти, если в массиве posts
есть запись с title: "javascript"
db.users.findOne({
posts: {
$elemMatch: {title: "javascript"}
}
})

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

Показывает всех пользователей, у кого вообще есть поле posts
.
Подключение базы данных 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://q1zeka1q:zeka2000@cluster0.wzxiqlh.mongodb.net/?retryWrites=true&w=majority&appName=Cluster0')
const start = async () => {
try{
await client.connect()
console.log("Connected")
await client.db().createCollection('users')
const users = client.db().collection('users')
await users.insertOne({name: 'gleb', age:29 })
const user = await users.findOne({name:'gleb'})
console.log(user)
}catch(e){
console.log(e)
}
}
start()

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