Funkce Count() & Remove() v MongoDB s příkladem

⚡ Chytré shrnutí

Funkce Count() a Remove() v MongoDB hlásit, kolik dokumentů kolekce obsahuje, a smazat z ní dokumenty. Metoda count() vrací celkový počet dokumentů, zatímco metoda remove() smaže všechny dokumenty nebo pouze ty, které splňují zadanou podmínku.

  • 🔢 Počet dokumentů: Metoda count() vrací počet dokumentů v kolekci nebo odpovídajících dotazu.
  • 🎯 Počítání s filtrem: Předání podmínky metodě count() zobrazí pouze dokumenty, které ji splňují.
  • 🗑️ Odebrat dokumenty: Metoda remove() smaže dokumenty, buď všechny, nebo ty, které odpovídají objektu kritérií.
  • ☝️ Odebrat jeden: Volba justOne omezuje funkci remove() na odstranění jednoho odpovídajícího dokumentu namísto všech shod.
  • 🔄 Moderní metody: Funkce countDocuments() a deleteMany() jsou aktuální náhradou za zastaralé funkce count() a remove().
  • 🖨️ Ověření výstupu: Každý příkaz vrací výsledek zobrazující počet odstraněných dokumentů.

Funkce Count() & Remove() v MongoDB

MongoDB Funkce Count().

Koncept agregace spočívá v provádění výpočtu na výsledcích, které jsou vráceny v dotazu. Předpokládejme například, že jste chtěli vědět, jaký je počet dokumentů v kolekci podle spuštěného dotazu MongoDB poskytuje funkci count().

Příklad MongoDB Funkce Count().

Podívejme se na příklad.

db.Employee.count()

Code Vysvětlení:

  • Výše uvedený kód provádí funkci počítání.

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

Výstup:

Příklad MongoDB Funkce Count().

Výstup jasně ukazuje, že ve fondu jsou 4 dokumenty.

MongoDB Počítání s podmínkou dotazu

Metoda count() je nejužitečnější při předávání podmínky dotazu, takže počítá pouze dokumenty, které odpovídají podmínce, nikoli celou kolekci. To je užitečné pro reporty, například kolik zaměstnanců patří do oddělení nebo kolik objednávek je stále otevřených.

Následující příklad počítá zaměstnance, jejichž Employeeid je větší než 2:

db.Employee.count({Employeeid:{$gt:2}})

Zde se děje:

  • Objekt dotazu {Employeeid:{$gt:2}} funguje jako filtr s použitím operátoru $gt (větší než).
  • Funkce count() vrací pouze počet dokumentů, které splňují filtr.
  • Zbytek kolekce je v součtu ignorován.

V aktuálním MongoDB verze je countDocuments() doporučenou metodou pro podmíněný počet, protože vždy vrací přesný výsledek. Stejný dotaz s ní funguje:

db.Employee.countDocuments({Employeeid:{$gt:2}})

Oba příkazy vracejí jedno číslo, které můžete uložit do proměnné nebo přímo zobrazit. Přidání odpovídajícího indexu k dotazovanému poli udržuje podmíněné počítání rychlé i u velkých kolekcí.

Provádění úprav

Další dvě třídy operací v MongoDB jsou prohlášení o aktualizaci a odstranění.

Operace aktualizace umožňují upravit existující data a operace odstranění umožňují odstranění dat z kolekce.

Funkce Remove() v MongoDB

In MongoDBse db.collection.remove() metoda se používá k odstranění dokumentů z kolekce. Ze sbírky lze odstranit buď všechny dokumenty, nebo pouze ty, které odpovídají konkrétní podmínce.

Pokud pouze zadáte příkaz remove, všechny dokumenty budou z kolekce odstraněny.

Příklad MongoDB Funkce Remove().

Následující příklad kódu ukazuje, jak odebrat konkrétní dokument z kolekce.

db.Employee.remove({Employeeid:22})

Code Vysvětlení:

  • Výše uvedený kód používá funkci remove a specifikuje kritéria, kterými je v tomto případě odstranění dokumentů, které mají id zaměstnance 22.

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

Výstup:

Příklad MongoDB Funkce Remove().

Výstup ukáže, že byl odstraněn 1 dokument.

Odstranění všech dokumentů vs. jeden dokument

Metoda remove() může smazat všechny odpovídající dokumenty nebo pouze jeden, v závislosti na předaných argumentech. Pochopení rozdílu zabraňuje náhodné ztrátě dat.

Chcete-li odstranit všechny dokumenty v kolekci, zadejte prázdnou podmínku:

db.Employee.remove({})

Tím se smažou všechny dokumenty, ale samotná kolekce se zachová. Chcete-li odstranit pouze dokumenty, které splňují podmínku, předejte objekt dotazu, jak bylo ukázáno dříve u {Employeeid:22}. Pokud se shoduje více dokumentů a chcete smazat pouze první z nich, přidejte možnost justOne:

db.Employee.remove({EmployeeName:"Smith"}, {justOne:true})

Klíčové rozdíly jsou:

  • Funkce remove({}) smaže všechny dokumenty v kolekci.
  • remove({condition}) smaže všechny dokumenty, které splňují podmínku.
  • remove({condition}, {justOne:true}) smaže pouze první odpovídající dokument.

Před spuštěním příkazu remove vždy dvakrát zkontrolujte podmínku, protože prázdný nebo nesprávný filtr může vymazat celou kolekci. V moderním MongoDB, deleteOne() a deleteMany() tyto vzory nahrazují a záměr vyjasňují.

Moderní alternativy k funkcím count() a remove()

Metody count() i remove() jsou starší. Novější. MongoDB Ovladače je označí jako zastaralé a poskytnou jasnější náhrady. Níže uvedená tabulka porovnává každou starou metodu s jejím moderním ekvivalentem:

Starší metoda Moderní náhrada Účel
počet() početDokumentů() Vrátí přesný počet odpovídajících dokumentů
počet() odhadovanýPočetDokumentů() Vrátí rychlý, přibližný počet všech dokumentů
odstranit() deleteOne() Smaže první dokument, který odpovídá filtru
odstranit() deleteMany() Smaže všechny dokumenty, které odpovídají filtru

Pro nové aplikace preferujte tyto moderní metody. Oddělují počítání od odhadování a mazání jednoho dokumentu od mazání mnoha, což dělá dotazy bezpečnějšími a snadněji čitelnými. Starší metody count() a remove() stále fungují pro starší tutoriály a skripty.

Nejčastější dotazy

Funkce remove() smaže dokumenty, ale zachová kolekci a její indexy. Funkce drop() smaže celou kolekci, včetně všech dokumentů a indexů. Pro data použijte funkci remove a pro úplné zrušení kolekce funkci drop.

Ne. Funkce remove() odstraní pouze dokumenty uvnitř kolekce. Kolekce, její indexy a konfigurace zůstávají na místě, takže do stejné kolekce můžete později vložit nové dokumenty, aniž byste ji museli znovu vytvářet.

Funkce count() může po neúspěšných operacích vrátit přibližnou hodnotu pro segmentované clustery. Pro přesný součet použijte funkci countDocuments(), která spustí agregaci; funkci estimatedDocumentCount() použijte v případě, že je rychlost důležitější než přesnost.

Umělá inteligence dokáže přeložit prostý požadavek na správný počet nebo smazat dotaz se správným filtrem a upozorní vás, když příkaz k odstranění ovlivní všechny dokumenty. Před spuštěním si jej vždy zkontrolujte.

Ano. Umělá inteligence může zkontrolovat příkaz remove nebo deleteMany, označit chybějící filtr, který by vymazal celou kolekci, a před spuštěním navrhnout přidání podmínky nebo vytvoření zálohy.

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