MongoDB – це одна з найпопулярніших баз даних NoSQL, яка є цінним інструментом для професійного зростання. Її гнучкість, здатність масштабуватися та обробляти значні обсяги інформації роблять її оптимальним рішенням для сучасних застосунків. Якщо ви прагнете навчитися основних запитів і дій у MongoDB, то ви знайшли потрібний матеріал.
MUO ВІДЕО ДНЯ
ПРОКРУТІТЬ, ЩОБ ПРОДОВЖИТИ ЧИТАННЯ
Незалежно від того, чи хочете ви ефективно отримувати дані та керувати ними, створювати надійні структури даних або розробляти адаптивні програми, глибоке розуміння стандартних запитів і операцій MongoDB, безперечно, покращить ваш професійний рівень.
1. Створення або перемикання баз даних
Створення бази даних локально через оболонку MongoDB є нескладним процесом, особливо якщо у вас вже налаштований віддалений кластер. Щоб створити нову базу даних у MongoDB, скористайтеся командою use:
use db_name
Хоча наведена вище команда створює нову базу даних, її також можна використовувати для переходу до вже існуючої бази даних, минаючи створення з нуля.
2. Видалення бази даних
Спочатку перейдіть до бази даних, яку ви хочете видалити, використовуючи команду use, як це було показано раніше. Після цього видаліть базу даних, використовуючи команду dropDatabase():
use db_name
db.dropDatabase()
3. Створення колекції
Для створення колекції спочатку перейдіть до потрібної бази даних. Використайте команду createCollection(), щоб створити нову колекцію MongoDB:
db.createCollection("collection_name")
Замініть `collection_name` на ту назву, яку ви хочете надати колекції.
4. Вставлення документа в колекцію
При додаванні даних до колекції, ви маєте можливість вставити один документ або масив документів.
Для вставки одного документа використовуйте наступне:
db.collection_name.insertOne({"Name":"Іван", "Interests":"Шахи"})
Ви також можете використовувати вищенаведений метод для вставки масиву документів з єдиним ідентифікатором:
db.collection_name.insertOne([{"Name":"Іван", "Interests":"Шахи"}, {"Language": "Mongo", "is_admin": true}])
Для одночасної вставки багатьох документів, кожен з яких має окремі ідентифікатори, використовуйте команду `insertMany`:
db.collection_name.insertMany([{"Name":"Іван", "Interests":"Шахи"}, {"Name": "Петро", "Interests": "Wordle"}])
5. Отримання всіх документів з колекції
Ви можете запросити всі документи з колекції за допомогою команди `find()`:
db.collection_name.find()
Наведена вище команда поверне усі документи в межах визначеної колекції:
Ви також маєте змогу обмежити кількість отриманих даних. Наприклад, скориставшись наступною командою, ви отримаєте лише перші два документи:
db.collection_name.find().limit(2)
6. Фільтрація документів у колекції
У MongoDB існує багато способів фільтрувати документи. Розглянемо, наприклад, наступні дані:
Якщо вам потрібно запросити лише певне поле в документі, використовуйте метод find:
db.collection_name.find({"Interests":"Wordle"}, {"_id":0, "Name":1})
Наведений вище код поверне всі документи, у яких значення поля “Interests” дорівнює “Wordle”. Він виводить тільки імена та не показує ідентифікатор документа.
Ви також можете фільтрувати колекцію за числовим значенням. Наприклад, якщо ви хочете отримати імена всіх користувачів старших 21 року, скористайтеся оператором $gt:
db.collection_name.find({"Interests":"Шахи", "Age":{"$gt":21}}, {"_id":0, "Name":1})
Результат буде виглядати так:
Спробуйте замінити find на findOne, щоб подивитися, що станеться. Однак, існує багато інших операторів для фільтрації:
- $lt: усі значення, що менші за вказане.
- $gte: значення, що дорівнюють або перевищують вказане.
- $lte: значення, що менші або дорівнюють вказаному.
- $eq: отримує всі значення, що дорівнюють вказаному.
- $ne: усі значення, що не дорівнюють вказаному.
- $in: використовуйте це при запиті на основі масиву. Він отримує всі значення, що збігаються з будь-яким елементом масиву. Оператор $nin діє навпаки.
7. Сортування запитів
Сортування дозволяє впорядкувати запит у певному порядку. Ви можете сортувати у порядку зростання або спадання. Важливо пам’ятати, що сортування потребує числового посилання.
Наприклад, щоб відсортувати в порядку зростання:
db.collection_name.find({"Interests":"Шахи"}).sort({"Age":1})
Щоб відсортувати наведений вище запит у порядку спадання, замініть “1” на “-1”.
db.collection_name.find({"Interests":"Шахи"}).sort({"Age":-1})
8. Оновлення документа
Оновлення MongoDB вимагають використання атомарних операторів, щоб вказати спосіб оновлення. Ось список часто використовуваних атомарних операторів, які можна використовувати у запитах на оновлення:
- $set: додає нове поле або змінює існуюче.
- $push: вставляє новий елемент у масив. Поєднайте його з оператором $each, щоб вставити декілька елементів одночасно.
- $pull: видаляє елемент з масиву. Використовуйте його з $in, щоб видалити декілька елементів за раз.
- $unset: видаляє поле з документа.
Щоб оновити документ та додати нове поле, наприклад:
db.collection_name.updateOne({"Name":"Світлана"}, {"$set":{"Name":"Дмитро", "email":"[email protected]"}})
Вище наведене оновлення змінить вказаний документ, як показано:
Для видалення поля email, скористайтеся оператором $unset:
db.collection_name.updateOne({"Name":"Світлана"}, {"$unset":{"email":"[email protected]"}})
Розгляньмо такі приклади даних:
Ви можете вставити елемент у існуюче поле масиву елементів, скориставшись оператором $push:
db.collection_name.updateOne({"Name":"Петро"}, {"$push":{"items":"Груша"}})
Ось результат:
Використовуйте оператор $each, щоб одночасно вставити декілька елементів:
db.collection_name.updateOne({"Name":"Петро"}, {"$push":{"items": {"$each":["Мигдаль", "Диня"]}}})
Ось результат:
Як згадувалося, оператор $pull видаляє елемент з масиву:
db.collection_name.updateOne({"Name":"Петро"}, {"$pull":{"items":"Груша"}})
Оновлені дані виглядатимуть так:
Додайте оператор $in, щоб видалити декілька елементів з масиву за один раз:
db.collection_name.updateOne({"Name":"Петро"}, {"$pull":{"items": {"$in":["Мигдаль", "Диня"]} }})
9. Видалення документа або поля
Ключові слова `deleteOne` або `deleteMany` видаляють документ з колекції. Використовуйте `deleteOne`, щоб видалити документ на основі вказаного поля:
db.collection_name.deleteOne({"Name":"ІванНазаренко"})
Якщо вам потрібно видалити багато документів із спільними ключами, скористайтеся `deleteMany`. Наведений нижче запит видалить усі документи, які містять “Шахи” як інтерес.
db.collection.deleteMany({"Interests":"Шахи"})
10. Операція індексування
Індексування підвищує продуктивність запитів, оптимізуючи кількість документів, які MongoDB має сканувати. Зазвичай, найкраще створювати індекси для тих полів, які ви використовуєте найчастіше у запитах.
Індексація в MongoDB схожа на використання індексів для оптимізації запитів SQL. Наприклад, щоб створити зростаючий індекс у полі “Ім’я”:
db.collection.createIndex({"Name":1})
Щоб отримати перелік всіх індексів:
db.collection.getIndexes()
Вище сказане є лише початком. Існує ще багато інших способів створення індексів у MongoDB.
11. Агрегація
Конвеєр агрегації, більш досконала версія MapReduce, дозволяє виконувати та зберігати складні обчислення безпосередньо в MongoDB. На відміну від MapReduce, який вимагає написання окремих функцій map та reduce на JavaScript, агрегація простіша у використанні та застосовує лише вбудовані методи MongoDB.
Наприклад, розгляньмо наступні дані про продажі:
Використовуючи агрегацію MongoDB, ви можете обчислити та зберегти загальну кількість проданих продуктів для кожної категорії наступним чином:
db.sales.aggregate([{$group:{"_id":"$Section", "totalSold":{$sum:"$Sold"}}}, {$project:{"_id":0, "totalSold":1, "Section":"$_id"}}])
Наведений вище запит поверне наступне:
Опануйте запити MongoDB
MongoDB пропонує велику кількість методів для запитів, включно з функціями, що підвищують продуктивність. Незалежно від вашої мови програмування, вищенаведені структури запитів є необхідними для взаємодії з базою даних MongoDB.
Однак, у базовому синтаксисі можуть бути деякі розбіжності. Наприклад, тоді як деякі мови програмування, наприклад Python, розпізнають snake_case, інші, включаючи JavaScript, застосовують camelCase. Переконайтеся, що ви дослідили, що працює у вашій обраній технології.