Your cart is currently empty!


♦
Jekaterina Guzek, Õpimapp / Portfolio
MongoDB — это база данных, но не такая, как привычные реляционные базы данных вроде MySQL или PostgreSQL. MongoDB — это документо-ориентированная база данных, основанная на NoSQL-подходе.
Термин (MongoDB) | Аналог в SQL |
---|---|
Database | База данных |
Collection | Таблица |
Document | Строка (но гибкая) |
Field | Столбец |
Первый взгяд, видим все базы данных
Далее разбирем команды в терменале:
show databases;
Показывает список всех баз данных.
use mongo
Переключение на базу данных mongo
. Если такой базы нет — она будет создана при первом сохранении данных.
db.createCollection("user");
Создаёт коллекцию user в текущей базе данных.
show collections;
Показывает список коллекций (таблиц) в текущей базе данных.
db.dropDatabase();
Удаляет текущую базу данных (в данном случае mongo
).
Далее снова создаем базу данных, используем ее создаем колекцию
db.users.insert({
name: "John",
age: 25,
})
Показывает предупреждение, что insert()
устарел. Лучше использовать insertOne()
/insertMany()
.
db.users.insertMany([
{name: "John", age: 25,},
{name: "Mary", age: 27,},
{name: "Kate", age: 21,},
{name: "Nora", age: 30,},
]);
Добавляет сразу несколько документов (записей).
db.users.find({age:25});
Ищет всех пользователей, у кого age = 25
.
db.users.find({$or: [{name: "Mary"}, {age:27}]});
Логическое ИЛИ — найдёт всех, у кого name = "Mary"
или age = 27
.
db.users.find({age: {$lt: 28}});
Найдёт всех, у кого возраст меньше 28 ($lt
— less than).
db.users.find({age: {$gt: 28}});
Найдёт всех, у кого возраст больше 28 ($gt
— greater than).
db.users.find().sort({age: -1});
Сортировка по убыванию возраста.
db.users.find().limit(2);
Покажет только 2 первых результата.
db.users.findOne({ _id: ObjectId('682d84241c8d2207adf3de8f')});
db.users.findOne({ _id: ObjectId(‘…’) });
Найдёт одного пользователя по ID.
db.users.update(
{name: "John"},
{
$set:{
name: "Ilon Mask",
age: 45,
}
}
)
Заменит имя и возраст для первого найденного John
. Но метод update
устарел — лучше использовать updateOne
.
db.users.updateMany(
{name: "John"},
{
$set: {
name: "Ilon Mask",
age: 45
}
}
)
Обновит всех John
сразу.
Спомощью db.users.find(); можно увидить все результаты
db.users.deleteOne({age: 45});
Удаляет одного пользователя с возрастом 45.
bulkWrite
db.users.bulkWrite([
{
insertOne: {
document: {fullName: "Nora", age: 30}
}
},
{
deleteOne: {
filter: {fullName: "Mary"}
}
}
])
Выполняет 2 действия:
Проверяем
db.users.update(
{fullName: "Nora"},
{
$set: {
post: [
{title: 'javascript', text: 'js top'},
{title: 'mongo', text: 'mongo database'}
]
}
}
)
Добавляет в профиль Nora
поле post
— это массив объектов.
Проверяем db.users.find();
db.users.find({
post: {
$elemMatch: {
title: "javascript"
}
}
})
Найдёт пользователя, у которого в массиве post
есть элемент с title: "javascript"
.
Первое, что начнем заходим в WebStorm -> new project
Открываем терминал и прописываем команды:
package.json
файл с настройками по умолчанию для проекта Node.js, -y
означает “yes to all”Открываем package.json и проверяем установился ли mongodb
Заходим в MongoDB Cloud (сменила проектр т.к. больше не дава сделать еще clusterid)
Выбираем Create Clusters и создаем новый кластер
Первым этапом будет нужно уставить IP address на 0.0.0.0/0
Выбираем тип подключения –> Drivers
Копируем ссылку для подключения базы данных к Node.js
Создаем фаил indexjs.js и пишем данный код:
const {MongoClient} = require('mongodb');
const client = new MongoClient('mongodb+srv://JekGuz:s5X9zFiyeaK9b4e4@cluster0.twhl3tc.mongodb.net/?retryWrites=true&w=majority&appName=Cluster0')
const start = async () => {
try {
await client.connect();
console.log('Работает!!!')
} catch (e) {
console.log(e)
}
}
start()
Этот код подключается к базе данных MongoDB в облаке. Сначала он создаёт “клиента” для подключения, затем пробует установить соединение. Если всё прошло успешно — в консоли появится сообщение “Работает!!!”. Если произойдёт ошибка — она будет выведена на экран.
База данных подключена.
Теперь мы можем создать коллекцию и добавить в неё пользователей.
const {MongoClient} = require('mongodb');
const client = new MongoClient('mongodb+srv://JekGuz:s5X9zFiyeaK9b4e4@cluster0.twhl3tc.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({fullName: 'ulbi', age: 21})
const user = await users.findOne({fullName: 'ulbi', age: 21})
console.log(user)
} catch (e) {
console.log(e)
}
}
start()
Получаем результат и видим его в логах.
Проверяем через графическую оболочку в MongoDB Cloud
Все работает.