MongoDB Dokument dotazu: db.collection.find() s příkladem

⚡ Chytré shrnutí

MongoDB Operace dotazování dokumentů načítají záznamy z kolekce pomocí funkce db.collection.find(). Metoda standardně vrací všechny dokumenty, akceptuje kritéria filtrování, jako jsou shody polí a operátor $gt, a formátuje výsledky pomocí příkazu forEach(printjson).

  • 🔍 Funkce find(): Metoda db.collection.find() načítá dokumenty z MongoDB kolekce, která vrací každý dokument, pokud není zadán žádný filtr.
  • 🎯 Kritéria filtru: Předání objektu dotazu, například {EmployeeName: „Smith“}, vrátí pouze dokumenty, které splňují podmínku.
  • Dotaz Operators: Výběrové operátory jako $gt, $lt a $in zpřesňují výsledky, například hledají zaměstnance s ID větším než 2.
  • 🖨️ Readable Výstup: Řetězení forEach(printjson) vytiskne každý vrácený dokument v čistém formátu JSON.
  • 🧾 Projekce: Druhý argument funkce find() vybírá, která pole se mají z výsledků zahrnout nebo vyloučit.

Metoda načítání nebo získávání dat z a MongoDB databáze se provádí pomocí MongoDB dotazy. Při provádění operace dotazu lze také použít kritéria nebo podmínky, které lze použít k načtení konkrétních dat z databáze.

MongoDB poskytuje funkci tzv db.collection.find() který se používá pro vyhledávání dokumentů z a MongoDB databáze.

V průběhu tohoto MongoDB dotazovací tutoriál, uvidíte, jak se tato funkce různými způsoby používá k dosažení účelu načítání dokumentů.

Co je db.collection.find() v MongoDB?

Metoda db.collection.find() je primárním způsobem, jak číst dokumenty z MongoDB kolekce. Když ji zavoláte bez argumentu, vrátí všechny dokumenty v kolekci. Když předáte objekt dotazu, vrátí pouze dokumenty, které splňují zadaná kritéria, takže můžete načíst přesně ta data, která potřebujete.

Metoda vrací kurzor, což je ukazatel na výslednou sadu, nikoli na samotné dokumenty. Pro zobrazení výsledků obvykle procházíte kurzorem, často pomocí forEach(printjson) pro zobrazení každého dokumentu v čitelném JSON. Pokud potřebujete pouze jeden záznam, MongoDB také poskytuje funkci findOne(), která vrací první odpovídající dokument místo kurzoru. Funkce find() a findOne() společně pokrývají většinu operací čtení v MongoDB databázi, od načítání celých kolekcí až po filtrování podle hodnot konkrétních polí.

MongoDB Základní dotaz Operace

Základní MongoDB Operátory dotazů pokrývají jednoduché operace, jako je získání všech dokumentů v a MongoDB sbírka. Podívejme se na příklad db.collection.find, jak toho můžeme dosáhnout.

Veškerý náš kód bude spuštěn v MongoDB JavaScénář příkazový shell. Zvažte, že máme sbírku s názvem 'Zaměstnanec' MongoDB databáze a provedeme níže uvedený příkaz.

MongoDB Základní dotaz Operace
MongoDB Základní operace dotazu

Code Vysvětlení:

  1. Zaměstnanec je název kolekce v MongoDB databáze
  2. Jedno MongoDB find query je vestavěná funkce, která se používá k načtení dokumentů v kolekci.

Pokud je příkaz úspěšně proveden, zobrazí se následující výstup MongoDB najít příklad

Výstup:

MongoDB Základní dotaz Operace

Výstup zobrazuje všechny dokumenty, které se nacházejí ve sbírce.

K našim dotazům můžeme také přidat kritéria, abychom mohli načítat dokumenty na základě určitých podmínek.

MongoDB Příklad dotazu – 1

Podívejme se na pár MongoDB dotaz na příklady, jak toho můžeme dosáhnout.

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

Code Vysvětlení:

  1. Zde chceme najít zaměstnance, jehož jméno je „Smith“ v kolekci , proto zadáme kritéria filtru jako EmployeeName: „Smith“

Pokud je příkaz úspěšně proveden, zobrazí se následující výstup

Výstup:

MongoDB Příklad dotazu

Výstup ukazuje, že je vrácen pouze dokument, který obsahuje „Smith“ jako jméno zaměstnance.

MongoDB Příklad dotazu – 2

Nyní v tomto MongoDB queries tutorial, podívejme se na další příklad kódu, který využívá větší než vyhledávací kritéria. Když je toto kritérium zahrnuto, ve skutečnosti prohledává dokumenty, kde je hodnota pole větší než zadaná hodnota.

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

Code Vysvětlení:

  1. Zde chceme najít pro všechny zaměstnance, jejichž id je větší než 2. $gt se nazývá operátor výběru dotazu a to, co znamená, je použít výraz větší než.

V případě, že MongoDB Pokud byl příkaz select fields úspěšně proveden, zobrazí se následující výstup

Výstup:

MongoDB Příklad dotazu

Vrátí se všechny dokumenty, jejichž ID zaměstnance je větší než 2.

MongoDB Dotaz Operatorů

MongoDB Filtruje dokumenty pomocí operátorů výběru dotazu uvnitř kritérií find(). Tyto operátory umožňují porovnávat rozsahy, seznamy a negace namísto pouze přesných hodnot. V následující tabulce jsou uvedeny nejběžnější operátory:

OperaTor Význam Příklad
$gt Větší než {ID zaměstnance: {$gt: 2}}
$lt Less než {ID zaměstnance: {$lt: 5}}
$gte Větší nebo roven {věk: {$gte: 18}}
$lte Less než nebo rovno {věk: {$lte: 60}}
$ne Nerovná se {stav: {$ne: „aktivní“}}
$v Odpovídá jakékoli hodnotě v seznamu {oddělení: {$in: [„HR“,„IT“]}}

Podmínky můžete také kombinovat s operátory $and a $or pro vytvoření přesnějších dotazů. Výběr správného operátoru udržuje dotazy efektivní a vrací pouze dokumenty, které vaše aplikace potřebuje.

Jak používat projekci s find()

Ve výchozím nastavení vrací find() celý dokument včetně všech polí. Často potřebujete jen několik polí, například jméno nebo ID. MongoDB umožňuje ovládat toto pomocí projekce, což je druhý argument předávaný funkci find(), který vypíše pole, která se mají zahrnout nebo vyloučit.

Chcete-li zahrnout pouze konkrétní pole, nastavte je v objektu projection na hodnotu 1. Následující dotaz vrátí pro každý dokument pouze pole EmployeeName:

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

MongoDB vždy vrací pole _id, pokud jej explicitně nevyloučíte. Chcete-li jej skrýt, nastavte _id na 0:

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

Pole můžete také vyloučit místo jejich zahrnutí nastavením na hodnotu 0. Například níže uvedený dotaz vrátí všechna pole kromě pole Employeeid:

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

Mějte na paměti, že v jedné projekci nelze kombinovat zahrnutí a vyloučení, s výjimkou pole _id. Použití projekce snižuje množství dat přenášených ze serveru, což zrychluje dotazy a usnadňuje čtení odpovědí, zejména u velkých dokumentů.

Nejčastější dotazy

Funkce find() vrací kurzor na všechny dokumenty, které odpovídají dotazu, takže může vrátit mnoho výsledků. Funkce findOne() vrací pouze první odpovídající dokument jako jeden objekt nebo hodnotu null, pokud žádný neodpovídá.

Propojte sort() a limit() s kurzorem find(). Například find().sort({age:1}).limit(5) vrátí pět nejmladších záznamů. V sort() použijte 1 pro vzestupné pořadí a -1 pro sestupné pořadí.

Použijte countDocuments() se stejným filtrem, například db.Employee.countDocuments({EmployeeName:”Smith”}). Vrátí počet odpovídajících dokumentů bez jejich načítání, což je rychlejší než čtení a počítání celé sady výsledků.

Umělá inteligence dokáže převést požadavek v prostém jazyce na dotaz find() se správnými operátory a projekcí a každou část vysvětlit. Před spuštěním v produkčním prostředí vždy dotaz otestujte na vzorových datech.

Ano. Umělá inteligence dokáže číst plán dotazu, odhalit chybějící indexy nebo neefektivní operátory a navrhnout indexy nebo přepsané filtry. To pomáhá vývojářům rychleji zlepšit výkon funkce find() u velkých kolekcí.

Shrňte tento příspěvek takto: