Основи баз даних
VTFK • 2025
Лекція 11: Пріоритет операторів
Фокус: гнучка схема, JSON-подібні дані
СУБД, яка зберігає дані як JSON документи в колекціях, без фіксованої схеми.
Аналогія: Як папка файлів, де кожен файл = JSON, а не рядки таблиці
Структура данных
| SQL | MongoDB | Опис |
|---|---|---|
| Database | Database | Контейнер |
| Table | Collection | Набір даних |
| Row | Document | Запис |
| Column | Field | Атрибут |
| Index | Index | Прискорення пошуку |
| Primary Key | _id | Унікальний ідентифікатор |
Типовий структура
{
_id: ObjectId("507f1f77bcf86cd799439011"),
name: "Alice",
email: "alice@example.com",
age: 28,
active: true,
address: {
city: "Kyiv",
zipcode: "01001"
},
hobbies: ["reading", "coding", "travel"]
}
insertOne та insertMany
// Додаємо одного користувача
db.users.insertOne({
name: "Bob",
email: "bob@example.com",
age: 25
});
// Додаємо кількох за раз
db.users.insertMany([
{ name: "Carol", age: 30 },
{ name: "David", age: 35 }
]);
find та findOne
// Отримуємо всіх користувачів
db.users.find();
// Отримуємо першого відповідного
db.users.findOne({ name: "Bob" });
// З фільтром
db.users.find({ age: { $gt: 25 } }); // вік > 25
// З проекцією (вибір колонок)
db.users.find({}, { name: 1, email: 1 });
| Оператор | Значення | Приклад |
|---|---|---|
| $gt | більше | { age: { $gt: 25 } } |
| $lt | менше | { age: { $lt: 65 } } |
| $gte | ≥ | { age: { $gte: 18 } } |
| $lte | ≤ | { age: { $lte: 100 } } |
| $eq | дорівнює | { status: { $eq: 'active' } } |
| $ne | не дорівнює | { role: { $ne: 'admin' } } |
| $in | у списку | { status: { $in: ['active','pending'] } } |
updateOne та updateMany
// Оновляємо одного користувача
db.users.updateOne(
{ name: "Bob" },
{ $set: { age: 26, updated_at: new Date() } }
);
// Оновляємо кількох
db.users.updateMany(
{ age: { $lt: 18 } },
{ $set: { status: "minor" } }
);
// Інкремент
db.users.updateOne(
{ _id: 123 },
{ $inc: { login_count: 1 } }
);
deleteOne та deleteMany
// Видаляємо одного
db.users.deleteOne({ _id: ObjectId("...") });
// Видаляємо кількох
db.users.deleteMany({ age: { $lt: 18 } });
// Видаляємо всіх (ОБЕРЕЖНО!)
db.users.deleteMany({});
MongoDB використовує оператори $gt, $lt итак далі
Без $set весь документ заміниться
db.users.updateOne(
{ _id: 123 },
{ age: 26 } // НЕПРАВИЛЬНО! замінить весь документ
);
Документ буде мати тільки поле age
db.users.updateOne(
{ _id: 123 },
{ $set: { age: 26 } } // оновити тільки age
);
$set оновлює конкретні поля
Від документів до AI
Перша версія
Cloud MongoDB
Pipeline для аналізу
Векторний пошук
Схема блога
// Додаємо пост
db.posts.insertOne({
title: "MongoDB вступ",
content: "Документоорієнтована база",
author: "alice@example.com",
likes: 5,
created_at: new Date(),
tags: ["database", "nosql"]
});
// Шукаємо посты автора
db.posts.find({ author: "alice@example.com" });
// Додаємо лайк
db.posts.updateOne(
{ _id: ObjectId("...") },
{ $inc: { likes: 1 } }
);
Далі — роботав з датами та часом
Лекція 13: Дати та час у SQL
Дякую за увагу! 💾