MongoDB є однією з найпопулярніших NoSQL баз даних, що дозволяє гнучко зберігати дані та масштабувати їх. На відміну від традиційних реляційних баз даних, MongoDB використовує структуру на основі документів, де дані зберігаються в колекціях як BSON (Binary JSON) документи. Якщо ви новачок у MongoDB, запити до даних можуть здаватися складними, але не хвилюйтесь — в цьому посібнику ми розглянемо, як виконувати базові запити в MongoDB Compass, графічному інтерфейсі для MongoDB.
Ми також розглянемо синтаксичні відмінності між PostgreSQL SQL запитами та MongoDB запитами, щоб ви могли зрозуміти нюанси та плавно перейти від SQL до NoSQL баз даних.
Що таке MongoDB Compass?
MongoDB Compass — це офіційний GUI (Graphical User Interface) для MongoDB. Він дозволяє користувачам взаємодіяти з їх базами даних MongoDB без необхідності писати складні команди чи код. Ви можете підключитися до вашої бази даних, переглядати дані та створювати або виконувати запити безпосередньо в інтерфейсі.
Як почати роботу з MongoDB Compass
- Встановіть MongoDB Compass: Спочатку завантажте та встановіть MongoDB Compass.
- Підключіться до MongoDB: Після відкриття MongoDB Compass вам потрібно підключитися до вашої інстанції MongoDB. Введіть ваш рядок підключення (для локальних або хмарних баз даних, таких як MongoDB Atlas).
- Виберіть базу даних: Після успішного підключення виберіть базу даних, до якої ви хочете робити запит, а потім виберіть колекцію.
Тепер давайте розглянемо MongoDB Compass запити, щоб витягти конкретні дані.
Базові запити MongoDB Compass
1. Запит для документів, що відповідають умові
Припустимо, у вас є колекція users
, і ви хочете знайти всіх користувачів, які старші за 25. Це можна зробити, використовуючи оператор $gt
в MongoDB.
Запит:
{ "age": { "$gt": 25 } }
- Цей запит витягне документи, де поле age більше 25.
Кроки в MongoDB Compass:
- Введіть запит у рядок запиту:
{"age": {"$gt": 25}}
. - Натисніть Enter або клікніть на кнопку Find.
- MongoDB Compass поверне всі документи, де age більше 25.
2. Знайти документи, де поле дорівнює значенню
Наприклад, якщо ви хочете знайти всіх користувачів, чиє ім’я — “John”:
Запит:
{ "name": "John" }
Кроки в MongoDB Compass:
- Введіть запит у рядок запиту:
{"name": "John"}
. - Натисніть Enter або клікніть Find.
- MongoDB Compass відобразить всі документи, де name точно дорівнює “John”.
3. Використання кількох умов (оператор AND)
Щоб знайти користувачів, які старші за 25 і мають роль “admin”, можна поєднати умови:
Запит:
{
"age": { "$gt": 25 },
"role": "admin"
}
Кроки в MongoDB Compass:
- Введіть запит у рядок запиту:
{"age": {"$gt": 25}, "role": "admin"}
. - Натисніть Enter або клікніть Find.
- MongoDB Compass поверне всі документи, що відповідають обом умовам.
4. Використання умов OR
Щоб знайти користувачів, які або старші за 25, або мають роль “admin”, використовуйте оператор $or
:
Запит:
{
"$or": [
{ "age": { "$gt": 25 } },
{ "role": "admin" }
]
}
Кроки в MongoDB Compass:
- Введіть запит у рядок запиту:
{ "$or": [{ "age": { "$gt": 25 } }, { "role": "admin" }] }
- Натисніть Enter або клікніть Find.
- MongoDB Compass відобразить документи, що відповідають хоча б одній умові.
5. Знайти документи з конкретними полями (проекція)
Іноді вам може знадобитися отримати лише певні поля з документів, наприклад, name
та age
всіх користувачів. Це можна зробити, використовуючи опцію проекції в Compass.
Запит:
{ }
У розділі Проекції:
{ "_id": 0, "name": 1, "age": 1 }
Кроки в MongoDB Compass:
- Введіть
{}
в рядок запиту, щоб знайти всі документи. - У розділі Проекція введіть:
{ "_id": 0, "name": 1, "age": 1 }
- Натисніть Enter або клікніть Find.
2.
MongoDB Compass відображатиме лише поляname
таage
для всіх документів.
6. Використання регулярних виразів
MongoDB підтримує регулярні вирази для пошуку в текстових полях. Наприклад, щоб знайти користувачів, чиє ім’я починається на "J", можна використати:
Запит:
{ "name": { "$regex": "^J" } }
Кроки в MongoDB Compass:
- Введіть запит у рядок запиту:
{"name": {"$regex": "^J"}}
. - Натисніть Enter або клікніть Find.
- MongoDB Compass відобразить документи, де name починається на "J".
7. Сортування результатів
Ви можете відсортовувати результати за будь-яким полем. Наприклад, щоб відсортувати користувачів за age в порядку спадання:
Запит:
{ }
У розділі Сортування:
{ "age": -1 }
Кроки в MongoDB Compass:
- Введіть
{}
в рядок запиту, щоб знайти всі документи. - У розділі Sort введіть:
{ "age": -1 }
- Натисніть Enter або клікніть Find.
- MongoDB Compass відобразить документи, відсортовані за полем age в порядку спадання.
8. Обмеження кількості результатів
Щоб обмежити кількість результатів, ви можете встановити ліміт (наприклад, отримати лише 5 документів):
Кроки в MongoDB Compass:
- Введіть
{}
в рядок запиту, щоб знайти всі документи. - Встановіть поле Limit на
5
. - Натисніть Enter або клікніть Find.
- MongoDB Compass поверне лише перші 5 документів.
Різниця між запитами MongoDB та PostgreSQL
Хоча MongoDB є NoSQL базою даних, а PostgreSQL — реляційною базою даних (SQL-орієнтованою), обидві мають різні підходи до запитів. Розуміння різниць у синтаксисі та структурі запитів є важливим при роботі з обома базами даних.
Звісно! Ось зміст без таблиці, але все ж чітко відформатовано для легкого порівняння:
Різниця між запитами MongoDB та PostgreSQL
1. Вибір
- MongoDB:
db.collection.find()
- PostgreSQL:
SELECT * FROM table;
2. Умова
- MongoDB:
{ "field": value }
- PostgreSQL:
WHERE field = value
3. Більше ніж
- MongoDB:
{ "field": { "$gt": value } }
- PostgreSQL:
WHERE field > value
4. Рівно
- MongoDB:
{ "field": value }
- PostgreSQL:
WHERE field = value
5. Умова AND
- MongoDB:
{ "$and": [{ "field1": value1 }, { "field2": value2 }] }
- PostgreSQL:
WHERE field1 = value1 AND field2 = value2
6. Умова OR
- MongoDB:
{ "$or": [{ "field1": value1 }, { "field2": value2 }] }
- PostgreSQL:
WHERE field1 = value1 OR field2 = value2
7. Проекція
- MongoDB:
{ "field1": 1, "field2": 1 }
- PostgreSQL:
SELECT field1, field2 FROM table;
8. Сортування
- MongoDB:
.sort({ "field": -1 })
- PostgreSQL:
ORDER BY field DESC
9. Ліміт
- MongoDB:
.limit(5)
- PostgreSQL:
LIMIT 5
Приклад запитів
MongoDB запит:
Щоб знайти користувачів, які старші за 25 та мають роль “admin”:
{
"age": { "$gt": 25 },
"role": "admin"
}
PostgreSQL запит:
Еквівалентний запит у PostgreSQL виглядатиме так:
SELECT * FROM users WHERE age > 25 AND role = 'admin';
MongoDB запит для сортування:
Щоб відсортувати користувачів за age в порядку спадання:
Розділ сортування:
{ "age": -1 }
PostgreSQL запит для сортування:
Еквівалентний запит у PostgreSQL виглядатиме так:
SELECT * FROM users ORDER BY age DESC;
Висновок
MongoDB Compass — надзвичайно зручний інструмент для запитів до баз даних MongoDB. Незалежно від того, чи ви новачок, чи вже маєте досвід роботи з базами даних, GUI робить процес запитів простим і інтуїтивно зрозумілим.
Розуміння різниці між запитами MongoDB, заснованими на документах, і традиційними запитами SQL допоможе вам з’єднати ці дві популярні системи баз даних.
Не соромтесь експериментувати з різними запитами за допомогою MongoDB Compass, а коли ви почуватиметесь впевнено, можна досліджувати більш складні операції MongoDB, такі як конвеєри агрегації, індексація та маніпулювання даними.
Бажаю успіхів у запитах!
Цей блог також містить детальне порівняння синтаксисів запитів MongoDB та PostgreSQL, що допоможе вам зрозуміти основні відмінності та безперешкодно перейти від роботи з SQL до NoSQL.
Перекладено з: A Beginner’s Guide to Querying MongoDB Using Compass: Mastering MongoDB Queries & Understanding Differences with SQL