MongoDB Документ запиту: db.collection.find() із прикладом

⚡ Розумний підсумок

MongoDB Операції запитів документів отримують записи з колекції за допомогою функції db.collection.find(). Метод за замовчуванням повертає всі документи, приймає критерії фільтрації, такі як збіги полів та оператор $gt, і форматує результати за допомогою команди forEach(printjson).

  • 🔍 Функція find(): Метод db.collection.find() отримує документи з MongoDB колекція, що повертає кожен документ, коли не задано фільтр.
  • 🎯 Критерії фільтра: Передача об'єкта запиту, такого як {EmployeeName: “Smith”}, повертає лише ті документи, що відповідають умові.
  • Запит Operaторс: Оператори вибору, такі як $gt, $lt та $in, уточнюють результати, наприклад, знаходять співробітників з ідентифікатором, більшим за 2.
  • 🖨️ Readable вихід: Ланцюжок forEach(printjson) друкує кожен повернутий документ у чистому форматі JSON.
  • 🧾 Проекція: Другий аргумент функції find() вибирає, які поля включити або виключити з результатів.

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

MongoDB надає функцію під назвою db.collection.find() який використовується для пошуку документів з a MongoDB , що постійно розширюється.

Під час цього MongoDB посібник із запитів, ви побачите, як ця функція використовується різними способами для досягнення мети пошуку документів.

Що таке db.collection.find() у MongoDB?

Метод db.collection.find() є основним способом читання документів з MongoDB колекція. Коли ви викликаєте його без аргументів, він повертає кожен документ у колекції. Коли ви передаєте об'єкт запиту, він повертає лише ті документи, які відповідають заданим критеріям, тож ви можете отримати саме ті дані, які вам потрібні.

Метод повертає курсор, який є вказівником на результуючий набір, а не на самі документи. Зазвичай для відображення результатів ви перебираєте курсор, часто за допомогою forEach(printjson) для відображення кожного документа у читабельному JSON. Якщо вам потрібен лише один запис, MongoDB також надає findOne(), який повертає перший відповідний документ замість курсора. Разом find() та findOne() охоплюють більшість операцій читання в MongoDB базу даних, від вибору цілих колекцій до фільтрації за значеннями певних полів.

MongoDB Базовий запит Operaвих

Основний MongoDB оператори запитів охоплюють прості операції, такі як отримання всіх документів у a MongoDB колекція. Давайте розглянемо приклад db.collection.find, як ми можемо це зробити.

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

MongoDB Базовий запит Operaвих
MongoDB Основна операція запиту

Code Пояснення:

  1. Employee — назва колекції в MongoDB база даних
  2. Команда MongoDB Запит на пошук — це вбудована функція, яка використовується для отримання документів у колекції.

Якщо команда виконана успішно, буде показано наступний результат для MongoDB знайти приклад

вихід:

MongoDB Базовий запит Operaвих

Вихідні дані показують усі документи, які присутні в колекції.

Ми також можемо додавати критерії до наших запитів, щоб ми могли отримати документи на основі певних умов.

MongoDB Приклад запиту – 1

Давайте подивимося на пару MongoDB приклади запитів того, як ми можемо це зробити.

db.Employee.find({EmployeeName : "Smith"}).forEach(printjson);

Code Пояснення:

  1. Тут ми хочемо знайти працівника з іменем «Сміт» у колекції, тому ми вводимо критерій фільтра як EmployeeName: «Сміт»

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

вихід:

MongoDB Приклад запиту

Результат показує, що повертається лише документ, який містить «Сміт» як ім’я працівника.

MongoDB Приклад запиту – 2

Тепер у цьому MongoDB посібник із запитів, давайте подивимося на інший приклад коду, який використовує критерій пошуку більше ніж. Коли цей критерій включено, він фактично шукає ті документи, де значення поля перевищує вказане значення.

db.Employee.find({Employeeid : {$gt:2}}).forEach(printjson);

Code Пояснення:

  1. Тут ми хочемо знайти всіх співробітників, чий ідентифікатор перевищує 2. $gt називається оператором вибору запиту, а це просто означає використання виразу більшого ніж.

Якщо MongoDB команда select fields виконана успішно, буде показано наступний результат

вихід:

MongoDB Приклад запиту

Усі документи, у яких ідентифікатор працівника більше 2, повертаються.

MongoDB Запит Operaторс

MongoDB фільтрує документи за допомогою операторів вибору запиту всередині критеріїв find(). Ці оператори дозволяють вам зіставляти діапазони, списки та заперечення, а не лише точні значення. У таблиці нижче наведено найпоширеніші оператори:

Operaтор Сенс Приклад
$gt Більш чим {Ідентифікатор співробітника: {$gt: 2}}
$lt Less ніж {Ідентифікатор співробітника: {$lt: 5}}
$gte Більше або дорівнює {вік: {$gte: 18}}
$lte Less ніж або дорівнює {вік: {$lte: 60}}
$ne Не дорівнює {статус: {$ne: “активний”}}
Збігається з будь-яким значенням у списку {відділ: {$in: [“HR”,”IT”]}}

Ви також можете поєднувати умови з операторами $and та $or для створення точніших запитів. Вибір правильного оператора забезпечує ефективність запитів і повертає лише ті документи, які потрібні вашій програмі.

Як використовувати проекцію з find()

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

Щоб включити лише певні поля, встановіть для них значення 1 в об'єкті проекції. Наступний запит повертає лише поле EmployeeName для кожного документа:

db.Employee.find({}, {EmployeeName: 1}).forEach(printjson);

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

db.Employee.find({}, {EmployeeName: 1, _id: 0}).forEach(printjson);

Ви також можете виключати поля замість того, щоб включати їх, встановивши для них значення 0. Наприклад, наведений нижче запит повертає всі поля, крім Employeeid:

db.Employee.find({}, {Employeeid: 0}).forEach(printjson);

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

Поширені запитання

find() повертає курсор до всіх документів, що відповідають запиту, тому може повернути багато результатів. findOne() повертає лише перший відповідний документ як окремий об'єкт або null, якщо жодного збігу немає.

Зв'яжіть sort() та limit() з курсором find(). Наприклад, find().sort({age:1}).limit(5) повертає п'ять наймолодших записів. Використовуйте 1 для порядку зростання та -1 для порядку спадання в sort().

Використовуйте countDocuments() з тим самим фільтром, наприклад, db.Employee.countDocuments({EmployeeName:”Smith”}). Він повертає кількість відповідних документів без їх вилучення, що швидше, ніж читання та підрахунок повного набору результатів.

Штучний інтелект може перетворити запит, написаний простою мовою, на запит find() з правильними операторами та проекцією, а також пояснити кожну частину. Завжди тестуйте запит на зразках даних, перш ніж запускати його у продакшені.

Так. Штучний інтелект може читати план запиту, виявляти відсутні індекси або неефективні оператори, а також пропонувати індекси або переписані фільтри. Це допомагає розробникам швидше покращити продуктивність find() у великих колекціях.

Підсумуйте цей пост за допомогою: