Kā saskaitīt dokumentus, izmantojot MongoDB kopējo skaitu

Ka Saskaitit Dokumentus Izmantojot Mongodb Kopejo Skaitu



Kā norāda nosaukums, lauka ierakstu skaitīšanai ir jāizmanto $count apkopojums MongoDB. Viens no populārākajiem ierakstu skaitīšanas veidiem ir count() metodes izmantošana. Turklāt daži apkopošanas operatori ļauj uzskaitīt ierakstus, kas iegūti no iepriekšējā apkopojuma konveijera posma. Šajā rokasgrāmatā šodien mēs apspriedīsim MongoDB skaitīšanas apkopošanu, izmantojot kodu piemērus.

Piemērs 01

Lai veiktu $skaitīšanas operāciju MongoDB datu bāzes kolekcijas laukos, mums ir jābūt daudziem ierakstiem. Tāpēc mēs izveidojām kolekciju ar nosaukumu “Test” un vienlaikus ievietojām tajā 12 ierakstus, izmantojot funkciju insertMany (). Tagad šīs kolekcijas “Pārbaude” ieraksti ir parādīti MongoDB apvalkā, izmantojot funkcijas find () vaicājumu. Varat redzēt, ka tajā ir pavisam trīs lauki:_id, nosaukums un rezultāts.

tests> db.Test.find({})







Tagad, lai piemērotu $ count posmu jebkurā laukā, mums ir jāizmanto MongoDB apkopošanas funkcija 'db' instrukcijā. Apkopošanas funkcija sastāv no nosacījuma priekšraksta, bieži izmantojot operatoru $match noteiktā laukā, kam seko jauns lauks, kas parāda kopējo skaitu, kas iegūts no norādītā nosacījuma lauka, izmantojot operatoru $count.



Mūsu gadījumā mēs esam izmantojuši operatoru $match, lai rezultātu laukā meklētu atbilstošos ierakstus vērtībai “60”, savukārt operators $count ir izmantots, lai saskaitītu kopējo ienesto ierakstu skaitu un parādītu tos zem jauns lauks ar nosaukumu “SameScore”. Šī vaicājuma izvadē tika rādīts lauks “SameScore” ar vērtību “2”, kas norāda, ka kolekcijā “Tests” ir divi ieraksti ar “score” vērtību “60” ir 2.



db.Test.aggregate([ { $match: { 'rezultāts' : 60 } }, { $count: 'SameScore' } ])

Varat arī izmantot $count agregāciju, lai saskaitītu laukus, kas nav skaitļi, piemēram, testa kolekcijas lauku “name”. Mēs esam izmantojuši atbilstības apkopošanu, lai meklētu ierakstu kolekcijā, kurā vārda laukam ir vērtība “Jānis”. Skaitu apkopojums ir veiksmīgi saskaitījis kopējo atbilstošo ierakstu skaitu, kas ir 2.





db.Test.aggregate([ { $match: { 'vārds' : 'Džons' } }, { $count: 'SameName' } ])

Piemērs 02

Atjaunināsim iepriekš minēto vaicājumu un piemērosim citu nosacījumu, lai iegūtu dažādus ierakstus. Šoreiz mēs izmantosim rezultāta lauka $match apkopojumu, lai iegūtu kopējo ierakstu skaitu, ja rezultāta lauka vērtība ir mazāka par 30. Skaitu apkopojums tiks skaitīts kopējais ierakstu skaits un pievienots jaunam kolonna “GradeD”. Izvade parāda rezultātu “2” kā atbilstošās vērtības skaitīšanas skaitli.

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

Varat arī izmantot $count agregāciju, vienlaikus lietojot loģiskos operatorus, lai lauka ierakstos izpildītu vairāk nekā 1 nosacījumu. Tāpēc laukam “Score”, izmantojot operatoru $and, kopā ir piemēroti divi nosacījumi: gte (lielāks par vai vienāds ar) un lte (mazāks par un vienāds ar). Abiem nosacījumiem ir jābūt patiesiem, lai iegūtu rezultātu un saskaitītu tā ierakstus. Kopējais skaits parāda, ka ir pieci ieraksti ar atbilstības kritērijiem.



db.Test.aggregate( [ { $match: { '$ un' : [ { 'rezultāts' : {$gte: 60 }}, { 'rezultāts' : {$lte: 80 }} ] }},

{ $count: 'B pakāpe' } ] )

Piemērs 03

Iepriekš redzamajos attēlos esam izmantojuši skaitīšanas apkopošanu, lai iegūtu tikai atbilstošo ierakstu skaitu konkrētām lauka vērtībām, piemēram, norādītajam rezultātam vai nosaukumam. MongoDB apkopošanas metode ļauj iegūt visu to ierakstu skaitu, kuros ir dublētās vērtības kolekcijā.

Lai to izdarītu, agregēšanas funkcijas komandā ir jāizmanto $group agregācija, kā norādīts tālāk. Lauks _id ir izmantots, lai norādītu lauku “nosaukums”, kurā darbotos skaitīšanas apkopošana. Papildus tam lietotāja definētais lauks NameCount izmantos $count apkopojumu, lai laukā “name” uzskaitītu vairākus dublikātus.

Šī vaicājuma izvade ir parādīta zemāk. Tajā ir ietvertas vērtības no lauka “name” un to skaita numurs laukā NameCount atbilstoši vērtību dublikātiem, piemēram, Cillian, kuram ir 4 dublikāti, un tā tālāk.

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

04. piemērs

Mēs varam arī izmantot skaitīšanas apkopošanu ligzdotu lauku ierakstos, lai uzskaitītu noteiktas lauka vērtības. Lai to sīkāk izstrādātu, esam izveidojuši kolekciju ar nosaukumu “Skolotājs” un pievienojuši tai ligzdotu lauku “apakš” un masīva tipa lauku “shift”, kā arī citus laukus: vārds un samaksa. Funkcija find() ir parādījusi visus piecus šīs kolekcijas ierakstus.

tests> db.Teacher.find({})

Tagad mēs esam izmantojuši apkopošanas funkciju, kas satur atbilstības operatoru. Arī operators $and ir lietots lauka “sub” apakšlaukam “math”, kurā ir divi dažādi nosacījumi. Pēc tam skaits ir aprēķināts. Izvade parāda, ka ir divi ieraksti, kuros matemātikas apakšlauka vērtības ir lielākas par 10 un mazākas par 20.

db.Teacher.aggregate( [ { $match: { '$ un' : [ { 'sub.math' : {$gte: 10 }}, { 'sub.math' : {$lte: divdesmit }} ] }}, { $count: 'A pakāpe' } ] )

05. piemērs

Apskatīsim pēdējo piemēru, lai šoreiz ilustrētu funkcijas count() izmantošanu, nevis skaitīšanas apkopošanu. Tātad funkcija count () ir piemērota kolekcijas “Skolotājs” masīva tipa laukam, t.i., “shift”. Izmantojot indeksus masīva laukam, izmantojot indeksu 2, mēs esam norādījuši atbilstības kritērijus kā “nakts”. Tas izvada “2” kā kopējo skaitīšanas skaitu ierakstam “nakts”.

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

Ļoti līdzīgā veidā funkciju count() var lietot arī ligzdotajiem laukiem, piemēram, apakšlauka “sub” apakšlaukam “phy” no kolekcijas “Teacher”. Mēs esam norādījuši atbilstības kritērijus, izmantojot operatoru “lte”, kas apakšlaukā “phy” norāda vērtības, kas ir mazākas par 14. Šīs instrukcijas izvade ir parādījusi “2”, t.i., 4 ierakstus, kuru vērtība ir mazāka par 14.

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

Secinājums

Šajā rokasgrāmatā ir demonstrēta un izstrādāta MongoDB $count apkopojuma izmantošana ar vairākiem koda piemēriem. Piemēri ietver skaitīšanas apkopošanas nozīmi, lai iegūtu skaitīšanas numuru konkrētiem vērtību ierakstiem un visiem lauku ierakstiem, izmantojot kolekcijas. Tas ietver arī skaitīšanas apkopošanas izmantošanu masīva laukos un iegultos (ligzdotos) laukos. Beigās ir iekļauts funkcijas count() piemērs, lai atšķirtu skaitīšanas apkopošanas un skaitīšanas funkcijas izmantošanu.