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 JavaСценарий командна обвивка. Помислете, че имаме колекция с име „Служител“ в нашата MongoDB база данни и изпълняваме командата по-долу.

MongoDB Основна заявка Operaции
MongoDB Основна операция за заявка

Code Обяснение:

  1. Employee е името на колекцията в MongoDB база данни
  2. - MongoDB find query е вградена функция, която се използва за извличане на документите в колекцията.

Ако командата е изпълнена успешно, ще се покаже следният изход за 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 командата за избор на полета е изпълнена успешно, ще се покаже следният изход

Изход:

MongoDB Пример за заявка

Всички документи, в които идентификаторът на служител е по-голям от 2, се връщат.

MongoDB Запитване Operaтори

MongoDB филтрира документи, използвайки оператори за избор на заявка в критериите find(). Тези оператори ви позволяват да съпоставяте диапазони, списъци и отрицания, вместо само точни стойности. Таблицата по-долу изброява най-често срещаните оператори:

OperaTor Значение Пример
$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() върху големи колекции.

Обобщете тази публикация с: