Dokumentumok számlálása a MongoDB összesített számlálóval

Dokumentumok Szamlalasa A Mongodb Osszesitett Szamlaloval



Ahogy a neve is sugallja, a MongoDB $count összesítését kell használni a mezőrekordok számlálásához. A rekordok megszámlálásának egyik népszerű módja a count() metódus használata. Ezenkívül bizonyos összesítési operátorok lehetővé teszik az összesítési folyamat előző szakaszából bevitt rekordok számlálását. Ebben a mai útmutatóban a MongoDB számlálási összesítését fogjuk megvitatni kódpéldák segítségével.

01. példa

A $count művelet végrehajtásához a MongoDB adatbázis-gyűjtemény mezőin számos rekordra van szükségünk. Ezért létrehoztunk egy „Test” nevű gyűjteményt, amelybe az insertMany() függvény segítségével egyszerre 12 rekordot szúrtunk be. Most ennek a „Teszt” gyűjteménynek a rekordjai megjelentek a MongoDB shellben a find() függvény lekérdezésén keresztül. Láthatja, hogy összesen három mezője van:_id, név és pontszám.

teszt> db.Test.find({})







Most, hogy a $count szakaszt bármelyik mezőre alkalmazni tudjuk, a MongoDB összesítő függvényét kell használnunk a „db” utasításon belül. Az összesítő függvény a feltétel utasításból áll, gyakran a $match operátort használva egy adott mezőben, majd egy új mezőt, amely megjeleníti a megadott feltételmezőből a $count operátor használatával kapott teljes számot.



Esetünkben a $match operátort használtuk a „60” értékhez tartozó egyező rekordok megkeresésére a pontszámmezőben, míg a $count operátort a beolvasott rekordok teljes számának megszámlálására és megjelenítésére használtuk. új „SameScore” nevű mező. A lekérdezés kimenete egy „SameScore” mezőt jelenített meg „2” értékkel, jelezve, hogy a „Test” gyűjteményben két olyan rekord van, amelyek „60” „score” értéke 2.



db.Test.aggregate([ { $match: { 'pontszám' : 60 } }, { $count: 'SameScore' } ])

A $count összesítést használhatja a számokon kívüli mezők megszámlálására is, például a Tesztgyűjtemény „név” mezőjére. Egyezés-összesítést használtunk annak a rekordnak a keresésére a gyűjteményben, ahol a névmező értéke „János”. A számlálási összesítés sikeresen megszámolta az egyező rekordok teljes számát, ami 2.





db.Test.aggregate([ { $match: { 'név' : 'János' } }, { $count: 'Ugyanaz a név' } ])

02. példa

Frissítsük a fenti lekérdezést, és alkalmazzunk egy másik feltételt, hogy különböző rekordokat kapjunk. Ezúttal a pontszámmező $match összesítését alkalmazzuk, hogy megkapjuk azon rekordok teljes számát, amelyeknél a pontszámmező értéke 30-nál kisebb. A számlálási összesítés megszámolja a rekordok teljes számát, és hozzáad egy újat. „D fokozatú” oszlop. A kimenet a „2” eredményt mutatja az illesztett érték számlálószámaként.

db.Test.aggregate( [ { $match: { score: { $lt: 30 } } }, { $count: 'D fokozatú' } ] )

Használhatja a $count aggregációt is, miközben a logikai operátorokat alkalmazza egynél több feltétel végrehajtására a mezőrekordokon. Ezért összesen két feltételt alkalmaztunk a „Score” mezőre az $and operátor használatával: gte (nagyobb vagy egyenlő) és lte (kisebb és egyenlő). Mindkét feltételnek igaznak kell lennie ahhoz, hogy megkapjuk az eredményt és megszámoljuk a rekordokat. A teljes szám azt mutatja, hogy öt rekord van a megfelelő feltételekkel.



db.Test.aggregate( [ { $match: { '$és' : [ { 'pontszám' : {$gte: 60 }}, { 'pontszám' : {$lte: 80 }} ] }},

{ $count: 'B fokozat' } ] )

03. példa

A fenti ábrákon a számlálási összesítést használtuk, hogy csak az egyező rekordok számát kapjuk meg az adott mezőértékekhez, például egy meghatározott pontszámhoz vagy névhez. A MongoDB összesítési módszere lehetővé teszi a gyűjteményben található ismétlődő értékeket tartalmazó rekordok számának lekérését.

Ehhez a $group aggregationt kell használnia az aggregate function parancson belül, az alábbiak szerint. Az _id mezőt a „name” mező megadására használták, amelyen a számlálási összesítés működni fog. Ezzel együtt a NameCount felhasználó által definiált mező a $count összesítést használja, hogy megszámoljon több ismétlődést a „name” mezőben.

A lekérdezés kimenete az alábbiakban látható. Tartalmazza a „name” mező értékeit és azok számának számát a NameCount mezőben, az értékek duplikációi szerint, például Cilliannak 4 duplikációja van, és így tovább.

db.Test.aggregate([ { $csoport: { _id: '$name' , NameCount: { $count: {} }, }, }, ])

04. példa

A beágyazott mezőrekordokon is használhatjuk a count aggregációt bizonyos mezőértékek megszámlálására. Ennek részletesebb ismertetése érdekében létrehoztunk egy „Tanár” nevű gyűjteményt, amelybe beágyazott „sub” mezőt és tömb típusú „shift” mezőt adtunk a többi mezővel együtt: név és fizetés. A find() függvény a gyűjtemény mind az öt rekordját megjeleníti.

teszt> db.Teacher.find({})

Most alkalmaztuk a match operátort tartalmazó összesítő függvényt. Ezenkívül az $and operátort alkalmaztuk a „sub” mező „math” almezőjére, amely két különböző feltételt tartalmaz. Ezután a szám kiszámítása megtörtént. A kimenet azt mutatja, hogy két olyan rekord van, ahol a matematikai részmező értéke 10-nél nagyobb és 20-nál kisebb.

db.Teacher.aggregate( [ { $match: { '$és' : [ { 'sub.math' : {$gte: 10 }}, { 'sub.math' : {$lte: húsz }} ] }}, { $count: 'A fokozat' } ] )

05. példa

Nézzük meg az utolsó példát a count() függvény használatának szemléltetésére ezúttal a count aggregation helyett. Tehát a count() függvényt alkalmaztuk a „Teacher” gyűjtemény tömb típusú mezőjére, azaz a „shift”-re. A 2. indexet használó tömbmező indexeit felhasználva az illesztési feltételeket „éjszaka”-ként határoztuk meg. „2”-t ad ki az „éjszaka” bejegyzés összes számlálási számaként.

db.Teacher.count({ 'shift.2' : 'éjszaka' })

Nagyon hasonló módon a count() függvény a beágyazott mezőkre is alkalmazható, például a „Teacher” gyűjtemény „sub” mezőjének „phy” almezőjére. Az illesztési feltételeket az „lte” operátor használatával határoztuk meg, amely 14-nél kisebb értékeket jelez a „phy” almezőben. Ennek az utasításnak a kimenete „2”, azaz 4 olyan rekordot jelenített meg, amelyek értéke kisebb, mint 14.

db.Teacher.count( { 'sub.phy' : { $lte: 14 } })

Következtetés

Ez az útmutató bemutatja és kidolgozza a MongoDB $count összesítésének használatát számos kódpéldával. A példák között szerepel a számlálási összesítés, amely az adott értékrekordok és a gyűjtemények összes mezőrekordjának számlálószámának lekérésére szolgál. Ezenkívül magában foglalja a tömbmezőkön és a beágyazott (beágyazott) mezőkön a számlálási összesítés használatát. Végül bekerült a count() függvénypélda, hogy különbséget tegyen a count aggregation és a count függvény használata között.