11 запитів і операцій MongoDB, які ви повинні знати

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":"Idowu", "Likes":"Chess"})

Ви також можете використовувати наведений вище метод, щоб вставити масив документів з одним ідентифікатором:

 db.collection_name.insertOne([{"Name":"Idowu", "Likes":"Chess"}, {"Language": "Mongo", "is_admin": true}])

Щоб вставити багато документів одночасно, кожен з яких має окремі ідентифікатори, використовуйте ключове слово insertMany:

 db.collection_name.insertMany([{"Name":"Idowu", "Likes":"Chess"}, {"Name": "Paul", "Likes": "Wordle"}])

5. Отримайте всі документи з колекції

Ви можете запитувати всі документи з колекції за допомогою ключового слова find():

 db.collection_name.find()

Наведене вище повертає всі документи всередині вказаної колекції:

Ви також можете обмежити отримані дані певним числом. Наприклад, ви можете скористатися наступною командою, щоб отримати лише перші два документи:

 db.collection_name.find().limit(2)

6. Фільтруйте документи в колекції

У MongoDB існує багато способів фільтрації документів. Розглянемо, наприклад, такі дані:

Якщо ви запитуєте лише певне поле в документі, використовуйте метод find:

 db.collection_name.find({"Likes":"Wordle"}, {"_id":0, "Name":1})

Наведене вище повертає всі документи, у яких значенням «Подобається» є Wordle. Він виводить лише імена та ігнорує ідентифікатор документа.

Ви також можете відфільтрувати колекцію за числовим фактором. Скажімо, ви хочете отримати імена всіх користувачів старше 21 року, скористайтеся оператором $gt:

 db.collection_name.find({"Likes":"Chess", "Age":{"$gt":21}}, {"_id":0, "Name":1})

Вихід виглядає так:

Спробуйте замінити find на findOne, щоб побачити, що станеться. Однак існує багато інших ключових слів фільтрації:

  • $lt: усі значення, менші за вказане.
  • $gte: значення, що дорівнюють або перевищують вказане.
  • $lte: значення, менші або рівні визначеному.
  • $eq: отримує всі значення, що дорівнюють вказаному.
  • $ne: усі значення не дорівнюють вказаному.
  • $in: використовуйте це під час запиту на основі масиву. Він отримує всі значення, що відповідають будь-якому з елементів масиву. Ключове слово $nin діє навпаки.

7. Сортування запитів

Сортування допомагає впорядкувати запит у певному порядку. Ви можете сортувати в порядку спадання або зростання. Майте на увазі, що сортування потребує числового посилання.

Наприклад, щоб відсортувати в порядку зростання:

 db.collection_name.find({"Likes":"Chess"}).sort({"Age":1})

Щоб відсортувати наведений вище запит у порядку спадання, замініть «1» на «-1».

 db.collection_name.find({"Likes":"Chess"}).sort({"Age":-1})

8. Оновіть документ

Оновлення MongoDB вимагають атомарних операторів, щоб указати, як ви хочете виконати оновлення. Ось список часто використовуваних атомарних операторів, які можна поєднати із запитом на оновлення:

  • $set: додайте нове поле або змініть існуюче.
  • $push: вставити новий елемент у масив. Поєднайте його з оператором $each, щоб вставити багато елементів одночасно.
  • $pull: видалити елемент із масиву. Використовуйте його з $in, щоб видалити багато елементів за один раз.
  • $unset: видалити поле з документа.

Щоб оновити документ і додати нове поле, наприклад:

 db.collection_name.updateOne({"Name":"Sandy"}, {"$set":{"Name":"James", "email":"[email protected]"}})

Вище оновлює вказаний документ, як показано:

Видалити поле електронної пошти просто за допомогою оператора $unset:

 db.collection_name.updateOne({"Name":"Sandy"}, {"$unset":{"email":"[email protected]"}})

Розглянемо такі приклади даних:

Ви можете вставити елемент в існуюче поле масиву елементів за допомогою оператора $push:

 db.collection_name.updateOne({"Name":"Pete"}, {"$push":{"items":"Plantain"}})

Ось результат:

Використовуйте оператор $each, щоб вставити багато елементів одночасно:

 db.collection_name.updateOne({"Name":"Pete"}, {"$push":{"items": {"$each":["Almond", "Melon"]}}})

Ось результат:

Як згадувалося, оператор $pull видаляє елемент із масиву:

 db.collection_name.updateOne({"Name":"Pete"}, {"$pull":{"items":"Plantain"}})

Оновлені дані виглядають так:

Додайте ключове слово $in, щоб видалити багато елементів у масиві за один раз:

 db.collection_name.updateOne({"Name":"Pete"}, {"$pull":{"items": {"$in":["Almond", "Melon"]} }}) 

9. Видалити документ або поле

Ключове слово deleteOne або deleteMany видаляє документ із колекції. Використовуйте deleteOne, щоб видалити документ на основі вказаного поля:

 db.collection_name.deleteOne({"Name":"IDNoble"})

Якщо ви хочете видалити багато документів зі спільними ключами, використовуйте deleteMany. Наведений нижче запит видаляє всі документи, які містять Chess як лайки.

 db.collection.deleteMany({"Likes":"Chess"})

10. Операція індексування

Індексування покращує продуктивність запитів, оптимізуючи кількість документів, які MongoDB має сканувати. Часто найкраще створити індекс для полів, які ви частіше запитуєте.

Індексація MongoDB подібна до використання індексів для оптимізації SQL-запитів. Наприклад, щоб створити зростаючий індекс у полі Ім’я:

 db.collection.createIndex({"Name":1})

Щоб отримати список ваших індексів:

 db.collection.getIndexes()

Сказане вище є лише преамбулою. Існує кілька інших методів створення індексу в MongoDB.

11. Агрегація

Конвеєр агрегації, покращена версія MapReduce, дозволяє запускати та зберігати складні обчислення всередині MongoDB. На відміну від MapReduce, який вимагає написання карти та функцій зменшення в окремих функціях JavaScript, агрегування є простим і використовує лише вбудовані методи MongoDB.

Розглянемо, наприклад, такі дані про продажі:

Використовуючи агрегацію MongoDB, ви можете обчислити та зберегти загальну кількість проданих продуктів для кожної категорії наступним чином:

 db.sales.aggregate([{$group:{"_id":"$Section", "totalSold":{$sum:"$Sold"}}}, {$project:{"_id":0, "totalSold":1, "Section":"$_id"}}])

Наведений вище запит повертає наступне:

Опануйте запити MongoDB

MongoDB пропонує багато методів запитів, включаючи функції для покращення продуктивності запитів. Незалежно від вашої мови програмування, наведені вище структури запитів є рудиментарними для взаємодії з базою даних MongoDB.

Однак у базовому синтаксисі можуть бути деякі розбіжності. Наприклад, у той час як деякі мови програмування, такі як Python, розпізнають регістр змій, інші, включаючи JavaScript, використовують верблюжий регістр. Переконайтеся, що ви дослідили, що працює для обраної вами технології.