MongoDB $ IFNULL -operatør

MongoDB $ IFNULL -operatør

Mens vi bruker operatører, kan vi ikke bare gjøre sammenligninger mellom operander, men vi kan også søke etter de manglende verdiene, oppdatere postene og mange flere. IFNull -operatøren av MongoDB, en slik operatør, har sin spesielle plass fordi den sjekker om det spesifikke feltet inneholder en nullverdi eller ikke. Hvis det aktuelle feltet har en nullverdi, kan vi utføre deretter: erstatte verdien med en ny verdi eller gjøre den tom. I denne opplæringen skal du lære bruken av IFNULL -operatøren av MongoDB ved bruk av MongoDB Shell. Derfor bør du ha MongoDB installert sammen med avhengighetene.

Opprett database og samling

La oss gå mot implementeringen av noen spørsmål i MongoDB -skallet for å vise bruken av "ifnull" -operatøren av MongoDB. Før det tar vi en titt på tilgjengeligheten av gjeldende databaser. For øyeblikket har vi 3 innebygde databaser tilgjengelig i vår MongoDB i henhold til "Show DBS" -instruksjonen. Vi må lage dummy -databasen som vi vil bruke i våre kommende eksempler. For dette bør vi først opprette en databasesamling.

Test> Vis DBS
Admin 40.00 KIB
konfigurasjon 60.00 KIB
Lokal 72.00 KIB

Når vi sjekker de totale samlingene, har vi i vår database, vi fant ut at det ikke er noen samling for nå, og vi må lage en som er "Show Collections" -instruksjonen.

Test> Vis samlinger

For å lage en ny samling, bør du utføre "CreateCollection" -metoden til MongoDB i skallet. Det skal ta navnet på en nyopprettet samling i parametrene, "Data". Utgangsresultatet som OK: 1 viser at samlingen din "data" er generert med hell.

Test> DB.CreateCollection ("Data")
OK: 1

Når du søker etter alle samlingene nå, vil du se en nyutviklet samling oppført der.

Test> Vis samlinger
Data

Etter å ha generert en ny samling i MongoDB -databasen, når vi søkte etter databasen, vises "test" -databasen som vi brukte uten engang å opprette i listen.

Test> Vis DBS
Admin 40.00 KIB
konfigurasjon 108.00 KIB
Lokal 72.00 KIB
Test 144.00 KIB

Sett inn poster til samling

Foreløpig bør du være sikker på at samlingen “data” er tom, da vi ikke la noen poster til den. Derfor gir en tom samling ingen mening, og vi trenger å sette inn dokumenter i den. Siden vi har jobbet for "$ ifnull" -operatøren, bør vi legge til feltene med nullverdier også. Derfor, starter vi med innsetting av nye dokumenterte poster i "Data" -samlingen, har vi prøvd InsertMany () -funksjonen til MongoDB for å sette inn mer enn 1 post på en gang. Innsetting av totalt 6 poster har funnet sted i ett trinn.

Postene skal være i et matriseformat eller [] parentes i starten og slutten av postene. Hver post skal skilles med et komma "," og krøllete "" -braketter. Nesten alle postene har i det minste 2 felt: felt "Navn" og "Alder". Mens alle "navn" -feltene inneholder en strengverdi, er det noen poster der feltet "alder" ikke inneholder noen post, null eller udefinert verdi. Etter vellykket utførelse av denne innsatsspørsmålet for "Data" -samlingen, vil du få kvitteringen på MongoDB Shell -skjermen som viser de automatisk genererte ID -ene for hver post.

Test> DB.Data.InsertMany ([navn: "Peter", alder: 24, Navn: "Ana", alder: null, Navn: "Bryan", alder: "", Navn: "Nina", alder: 33 , Navn: "John", navn: "Michael", alder: udefinert])

Anerkjent: sant,
innsats:
'0': ObjectId ("63bc3f53a2e5d7c94c4de66b"),
'1': ObjectId ("63bc3f53a2e5d7c94c4de66c"),
'2': ObjectId ("63bc3f53a2e5d7c94c4de66d"),
'3': ObjectId ("63bc3f53a2e5d7c94c4de66e"),
'4': ObjectId ("63bc3f53a2e5d7c94c4de66f")
'5': ObjectId ("63bcbf7552359fabfc4a770e")

Etter å ha satt inn totalt 6 poster med suksess i "Data" -samlingen av MongoDB "Test" -databasen, må du også se på alle disse postene. For dette må du vise hvert av "Data" -samlingspostene i JSON -formatet ved hjelp av foreach () -funksjonen. For dette bør du finne alle postene via "Finn" -funksjonen og deretter bruke foreach () -funksjonen som vist i utgangen nedenfor. Argumentet "Printjson" er et must-have her. Utgangen for å vise alle 6 poster over "data" -samling i JSON -formatet er vedlagt nedenfor.

Test> DB.Data.finne().Foreach (Printjson)
_id: ObjectId ("63bc3f53a2e5d7c94c4de66b"), navn: 'Peter', alder: 24
_id: ObjectId ("63bc3f53a2e5d7c94c4de66c"), navn: 'ana', alder: null
_id: ObjectId ("63bc3f53a2e5d7c94c4de66d"), navn: 'Bryan', alder: "
_id: ObjectId ("63bc3f53a2e5d7c94c4de66e"), navn: 'nina', alder: 33
_id: ObjectId ("63bc3f53a2e5d7c94c4de66f"), navn: 'John'
°

Bruk "ifnull" -operatøren på "alder" -feltet i "data" -samlingen, da den inneholder udefinerte og nullverdier i dokumenter. Aggregate () -funksjonen til en MongoDB bør brukes til å bruke "IFNULL" -operatøren på "alder" -feltet. Derfor startet vi spørringen med navnet på en samling. Det blir fulgt av den "samlede" funksjonen som inneholder prosjektoperatøren for å projisere på det aktuelle feltet som "IFNULL" -operatøren skal brukes. "Navn" -feltet er satt til 1 slik at det kan vises. "Ifnull" -operatøren inneholder to argumenter som ["", ""] brukt på "alder" -feltet. Utgangen fra denne spørringen viser alder: ”som erstattet aldersverdiene med ingenting. Dette er fordi vi ikke har definert navnet på et "alder" -felt i det første argumentet til en IFNULL -operatør.

Test> DB.Data.Aggregate ([$ prosjekt: Navn: 1, alder: $ ifnull: ["", ""]]))
[
_id: ObjectId ("63BCB7A552359FABFC4A7701"), Navn: 'Peter', alder: ",
_id: ObjectId ("63BCB7A552359FABFC4A7702"), Navn: 'Ana', alder: ",
_id: ObjectId ("63BCB7C352359FABFC4A7703"), Navn: 'Bryan', alder: ",
_id: ObjectId ("63BCB7C352359FABFC4A7704"), Navn: 'Nina', alder: ",
_id: ObjectId ("63BCB7D052359FABFC4A7705"), Navn: 'John', alder: ",
_id: ObjectId ("63BCBF7552359FABFC4A770E"), Navn: 'Michael', alder: "
]

Når du bruker noe strenguttrykk i det første argumentet fra "IFNULL" -operatøren, vil det erstatte alle verdiene til et "alder" -felt med den strengen. I utdataene nedenfor har vi brukt strengen "udefinert", og den har tatt stedet for originale verdier i aldersfeltet til alle poster.

Test> DB.Data.Aggregate ([$ prosjekt: Navn: 1, alder: $ ifnull: ["undefined", ""]]))
[
°,
°,
°,
°,
°,
°
]

For å unngå noe slikt, må vi bruke "alder" -feltet som det første argumentet til IFNULL -operatøren sammen med "$" -tegnet. La deretter det andre argumentet være tomt i.e., Andre argument som verdien. Ved utførelse av denne samlede instruksjonen vil vi vise utdataene som er vedlagt nedenfor. Nå kan du se at aldersfeltet har vist sine opprinnelige verdier der det ikke er noen "null" -verdi. Og hvor verdiene er null eller udefinert, erstattes aldersfeltet med tomt ”.

Test> DB.Data.Aggregate ([$ prosjekt: Navn: 1, alder: $ ifnull: ["$ age", ""]]))
[
_id: ObjectId ("63BCB7A552359FABFC4A7701"), Navn: 'Peter', alder: 24,
_id: ObjectId ("63BCB7A552359FABFC4A7702"), Navn: 'Ana', alder: ",
_id: ObjectId ("63BCB7C352359FABFC4A7703"), Navn: 'Bryan', alder: ",
_id: ObjectId ("63BCB7C352359FABFC4A7704"), Navn: 'Nina', alder: 33,
_id: ObjectId ("63BCB7D052359FABFC4A7705"), Navn: 'John', alder: ",
_id: ObjectId ("63BCBF7552359FABFC4A770E"), Navn: 'Michael', alder: "
]

La oss se på forskjellige utgangsverdier for nullverdiene i "alder" -feltet ved å bruke IFNULL -operatøren i den samlede instruksjonen. Denne gangen bruker vi "Null Value" -strengen som det andre argumentet til IFNULL -operatøren for å erstatte nullverdier i feltet "alder". Resultatet festet nedenfor viste erstatning av nullverdier med "nullverdi" -strengen.

Test> DB.Data.Aggregate ([$ prosjekt: Navn: 1, alder: $ ifnull: ["$ age", "Null Value"]]))
[
_id: ObjectId ("63BCB7A552359FABFC4A7701"), Navn: 'Peter', alder: 24,
°,
_id: ObjectId ("63BCB7C352359FABFC4A7703"), Navn: 'Bryan', alder: ",
_id: ObjectId ("63BCB7C352359FABFC4A7704"), Navn: 'Nina', alder: 33,
°,
°
]

Konklusjon

Denne artikkelen inneholder en diskusjon om bruken av IFNULL -operatøren som starter fra introduksjonen til sluttillustrasjonen. Illustrasjonene viser hvordan en original "null" -verdi av et bestemt felt kan erstattes med en ny verdi. Etter å ha diskutert hele prosedyren for bruk.