Count() & Remove() függvények MongoDB példával

⚡ Okos összefoglaló

Count() és Remove() függvények a MongoDB Jelentést ad arról, hogy egy gyűjtemény hány dokumentumot tartalmaz, és töröl belőle dokumentumokat. A count() metódus visszaadja a dokumentumok teljes számát, míg a remove() metódus minden dokumentumot vagy csak azokat törli, amelyek megfelelnek egy adott feltételnek.

  • 🔢 Dokumentumok számlálása: A count() metódus visszaadja a gyűjteményben lévő vagy a lekérdezésnek megfelelő dokumentumok számát.
  • 🎯 Számolás szűrővel: A count() függvénynek átadott feltétel csak azokat a dokumentumokat jelenti, amelyek eleget tesznek a feltételnek.
  • 🗑️ Dokumentumok eltávolítása: A remove() metódus törli a dokumentumokat, vagy az összeset, vagy azokat, amelyek megfelelnek egy criteria objektumnak.
  • ☝️ Egy eltávolítása: A justOne opció korlátozza a remove() függvényt, hogy csak egyetlen egyező dokumentumot töröljön az összes egyezés helyett.
  • 🔄 Modern módszerek: A countDocuments() és a deleteMany() a jelenlegi helyettesítői az elavult count() és remove() metódusoknak.
  • 🖨️ Kimenet ellenőrzése: Minden parancs egy eredményt ad vissza, amely a darabszámot vagy az eltávolított dokumentumok számát mutatja.

Count() & Remove() függvények MongoDB

MongoDB Count() függvény

Az összesítés fogalma a lekérdezésben visszaadott eredmények számításának végrehajtása. Tegyük fel például, hogy meg akarta tudni, mennyi a dokumentumok száma egy gyűjteményben az aktivált lekérdezés szerint, akkor MongoDB biztosítja a count() függvényt.

Például az MongoDB Count() függvény

Nézzünk erre egy példát.

db.Employee.count()

Code Magyarázat:

  • A fenti kód végrehajtja a számláló funkciót.

Ha a parancs sikeresen végrehajtásra került, a következő kimenet jelenik meg

output:

Például az MongoDB Count() függvény

A kimeneten jól látható, hogy 4 dokumentum van a gyűjteményben.

MongoDB Számlálás lekérdezési feltétellel

A count() metódus akkor a leghasznosabb, ha lekérdezési feltételt adsz meg, így csak az egyező dokumentumokat számolja a teljes gyűjtemény helyett. Ez hasznos jelentések készítéséhez, például ahhoz, hogy hány alkalmazott tartozik egy részleghez, vagy hány rendelés van még folyamatban.

A következő példa azokat az alkalmazottakat számolja, akiknek az Employeeid értéke nagyobb, mint 2:

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

Itt van, mi történik:

  • Az {Employeeid:{$gt:2}} lekérdezési objektum szűrőként működik, a $gt (nagyobb, mint) operátort használva.
  • A count() függvény csak a szűrőnek megfelelő dokumentumok számát adja vissza.
  • A gyűjtemény többi részét figyelmen kívül hagyjuk az összesítésben.

Jelenlegi MongoDB verziók esetén a countDocuments() az ajánlott metódus a feltételes számláláshoz, mivel mindig pontos eredményt ad vissza. Ugyanaz a lekérdezés működik vele is:

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

Mindkét parancs egyetlen számot ad vissza, amelyet egy változóban tárolhatsz, vagy közvetlenül megjeleníthetsz. A lekérdezett mezőhöz egyező index hozzáadása nagy gyűjtemények esetén is gyors feltételes számlálást biztosít.

Módosítások végrehajtása

A másik két műveleti osztály a MongoDB a frissítés és eltávolítás utasítások.

A frissítési műveletek lehetővé teszik a meglévő adatok módosítását, az eltávolítási műveletek pedig az adatok törlését egy gyűjteményből.

Remove() függvény be MongoDB

In MongoDB, a db.collection.remove() módszer a dokumentumok gyűjteményből való eltávolítására szolgál. Vagy az összes dokumentum eltávolítható a gyűjteményből, vagy csak azok, amelyek megfelelnek egy adott feltételnek.

Ha csak kiadja az eltávolítás parancsot, akkor az összes dokumentumot eltávolítja a gyűjteményből.

Például az MongoDB Remove() függvény

A következő kódpélda bemutatja, hogyan távolíthat el egy adott dokumentumot a gyűjteményből.

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

Code Magyarázat:

  • A fenti kód az eltávolítás funkciót használja, és meghatározza azokat a feltételeket, amelyek ebben az esetben a 22-es alkalmazotti azonosítóval rendelkező dokumentumok eltávolítását jelentik.

Ha a parancs sikeresen végrehajtásra került, a következő kimenet jelenik meg

output:

Például az MongoDB Remove() függvény

A kimenet azt fogja mutatni, hogy 1 dokumentumot eltávolítottak.

Az összes dokumentum eltávolítása egyetlen dokumentum eltávolításával szemben

A remove() metódus képes törölni az összes egyező dokumentumot, vagy csak egyet, az átadott argumentumoktól függően. A különbség megértése megakadályozza a véletlen adatvesztést.

Egy gyűjtemény összes dokumentumának eltávolításához adjon át egy üres feltételt:

db.Employee.remove({})

Ez az összes dokumentumot törli, de magát a gyűjteményt megtartja. Ha csak a feltételnek megfelelő dokumentumokat szeretné eltávolítani, adjon át egy lekérdezésobjektumot, ahogy azt korábban a {Employeeid:22} paraméterrel láthattuk. Ha több dokumentum is egyezik, és csak az elsőt szeretné törölni, adja hozzá a justOne opciót:

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

A legfontosabb különbségek a következők:

  • A remove({}) függvény törli az összes dokumentumot a gyűjteményből.
  • A remove({condition}) függvény törli az összes olyan dokumentumot, amely megfelel a feltételnek.
  • A remove({condition}, {justOne:true}) csak az első egyező dokumentumot törli.

Mindig ellenőrizd a feltételt a remove parancs futtatása előtt, mert egy üres vagy rossz szűrő a teljes gyűjteményt kiürítheti. Modern környezetben MongoDBA deleteOne() és deleteMany() függvények lecserélik ezeket a mintákat, és egyértelműbbé teszik a szándékot.

Modern alternatívák a count() és remove() függvényekre

Mind a count(), mind a remove() metódusok régebbi metódusok. Újabb MongoDB az illesztőprogramok elavultként jelölik meg őket, és egyértelműbb helyettesítőket biztosítanak. Az alábbi táblázat az egyes régi metódusokat a modern megfelelőjükhöz rendeli:

Régi módszer Modern csere Cél
számol () számlálóDokumentumok() A megfelelő dokumentumok pontos számát adja vissza.
számol () becsültDokumentumSzám() Gyorsan visszaadja az összes dokumentum hozzávetőleges számát
eltávolítás () deleteOne() Törli az első, a szűrőnek megfelelő dokumentumot
eltávolítás () töröl() Törli az összes dokumentumot, amely megfelel a szűrőnek

Új alkalmazásokhoz előnyben részesítsd ezeket a modern metódusokat. Ezek elkülönítik a számlálást a becsléstől, és egy dokumentum törlését a sok törlésétől, ami biztonságosabbá és könnyebben olvashatóvá teszi a lekérdezéseket. A korábbi count() és remove() metódusok továbbra is működnek régebbi oktatóanyagok és szkriptek esetén.

GYIK

A remove() törli a dokumentumokat, de megőrzi a gyűjteményt és annak indexeit. A drop() törli a teljes gyűjteményt, beleértve az összes dokumentumot és indexet is. Az adatokhoz a remove, a gyűjtemény teljes elvetéséhez pedig a drop metódust használjuk.

Nem. A remove() függvény csak a gyűjteményen belüli dokumentumokat törli. A gyűjtemény, annak indexei és konfigurációja a helyén marad, így később új dokumentumokat szúrhatsz be ugyanabba a gyűjteménybe anélkül, hogy újra létre kellene hoznod azt.

A korábbi count() függvény a sikertelen műveletek után vissza tud adni egy hozzávetőleges értéket a szétválasztott klasztereken. Pontos összegzéshez használd a countDocuments() függvényt, amely egy összesítést futtat; használd az estimatedDocumentCount() függvényt, ha a sebesség fontosabb, mint a pontosság.

A mesterséges intelligencia a megfelelő szűrővel képes egy egyszerű kérést a megfelelő számláló vagy törlési lekérdezéssé alakítani, és figyelmeztetni, ha egy eltávolítási parancs minden dokumentumot érintene. Futtatás előtt mindig ellenőrizze.

Igen. A mesterséges intelligencia képes áttekinteni a remove vagy deleteMany parancsokat, megjelölni egy hiányzó szűrőt, amely a teljes gyűjteményt törölné, és javasolni egy feltétel hozzáadását vagy biztonsági mentés készítését a parancs futtatása előtt.

Foglald össze ezt a bejegyzést a következőképpen: