MongoDB -filterforespørsel

MongoDB -filterforespørsel
MongoDB -filteraggregering ble introdusert i versjon 3.2. Den brukes til å velge en delmengde av en matrise og gi resultatet basert på kriterier. Filteroperatøren returnerer en rekke oppføringer som passer til det medfølgende kriteriet i den rekkefølgen de ble funnet. Når du bruker filteroperatøren i MongoDB, må vi oppgi inngangen, og cond som argumenter. Input og cond er nødvendige parametere, men "som" er valgfritt. Vi må bruke $ -tegnet før filternøkkelordet når vi bruker filteroperatøren i MongoDB.

Syntaks av filterforespørselen MongoDB i Ubuntu 20.04?

$ Filteroperatøren gir en matrise med bare de elementene i den opprinnelige rekkefølgen som samsvarer med tilstanden. Nevnt nedenfor er syntaks for $ filter:

$ filter: input: , som: , cond:
  • Filter: $ Filteroperatøren brukes til å gi et resultat som oppfyller visse kriterier. I MongoDB brukte vi filteroperatøren for å filtrere resultatene basert på kriteriet vi spesifiserte i spørringen.
  • Input: Dette er et uttrykk for oppløsning av array. Vi klarte å passere matrisefeltet som en inngangsparameter for å filtrere postene. Før vi bruker inngangsfeltparameteren i filteroperatøren, må vi bruke $ -tegnet.
  • AS: Det er et filteroperatørargument som er valgfritt. Dette er feltets navn som ble brukt som et element i inngangsarrayen. Denne parameteren er av strengtypen i filteroperatøren. Ved hjelp av "som" nøkkelordet får dette uttrykket tilgang til hvert element i en inngangsarray.
  • Cond: Dette alternativet avgjør hvor verdien fra den genererte matrisen skal inkluderes. Denne parameteren er av ekspresjonstypen i filteroperatøren. Verdiene fra den gitte samlingen ble filtrert ved bruk av uttrykk. Vi kan bruke mange betingede operatører til å filtrere data fra matriseelementer.

Hvordan filterforespørselen fungerer i MongoDB i Ubuntu 20.04:

En MongoDB $ filteroperatør brukes til å filtrere dokumenter fra en matrise basert på en betingelse som vi definerte i spørringen vår. Basert på den gitte tilstanden, returnerer en delmengde av en matrise. Bare de matriseoppføringene som tilfredsstiller kravene blir returnert. Elementene blir satt sammen igjen i samme ordning som før.

La oss se på noen tilfeller for å hjelpe deg å forstå hva vi diskuterer. Når vi fortsetter gjennom artikkelen, vil vi at du prøver eksemplene i Mongo Shell. Vi starter med å lage en databasesamling som bruker gjennom hele artikkelen.

Her har vi definert en samling av databasen som "kandidater" ved å bruke MongoDB -skallet. For denne samlingen har vi feltet ID, navn og merker. Vi har satt inn syv dokumenter samtidig ved å bruke Insertmany -spørringen.

Samlingen "kandidater" påkaller funnfunksjonen som i spørringen ovenfor. Deretter viser det registrerte dokumentet feltet og dets tilsvarende verdier. Legg merke til at i feltet "merker" er matrisen definert med noen tilfeldige verdier.

Eksempel 1: Bruke $ filteroperatøren i MongoDB i Ubuntu 20.04:

$ Filteroperatøren brukes til å filtrere matrisemedlemmene i feltet "merker" fra den gitte samlingen i følgende eksempel:

Vi har brukt den samlede spørringen om samlingen av "kandidater". Inne i denne spørringen har vi $ Match -operatøren som brukes til å filtrere dokumentet av IDen. Vi har tildelt ID -feltet en $ i operatøren. $ I operatøren finner dokumenter der verdien av ID tilsvarer enhver verdi i den medfølgende matrisen. Deretter blir $ filteroperatøren bestått inngangsargumentet og setter verdien “$ merker”. "As" -parameteren brukes også som returnerer feltnavnet "merker". Deretter har vi spesifisert kondisjonsparameteren som bruker den større enn operatøren på feltet "$$ merker".

Ved å følge spørringen ovenfor, blir resultatet vi fikk vist på figuren med det nye feltnavnet Highmarks.

Eksempel 2: Bruke $ filteroperatøren for en tom matrise i MongoDB i Ubuntu 20.04:

Når et av samlingsdokumentene våre har en tom matrise, returnerer filteroperatøren et tomt matrise -sett, som det kan sees her:

Innenfor $ -kampen har vi spesifisert IDen som har $ i operatøren som returnerer ID “7” fra samlingen som vi har gitt “7” inne i en matrise. Deretter har $ filter -spørringen gitt samlingsfeltet "merker" som returnerer en tom matrise fordi ingen verdi lagres inne i "Marks" -feltet til ID "7".

Resultatet av filteroperatøren har et tomt sett med dokumentet her.

Eksempel 3: Bruke $ filteroperatøren for feil type i MongoDB i Ubuntu 20.04:

Hvis vi prøver å bruke $ filteret på et felt som ikke har en matrise, vil vi få en feil. Følgende er demonstrasjonen av denne uttalelsen.

Vi har gitt et felt "navn" fra dokumentet hvis ID er "5" inne i $ filteroperatøren. I parameterkondisjonen til $ filter har vi $ EQ -operatøren som tar feltet "$ navn" og samsvarer med strengverdien som er definert til den.

Når vi kjører spørringen ovenfor, viser feilmeldingen at typen må være en matrise i $ filteroperatøren som sett på figuren.

Eksempel 4: Bruke $ filteroperatøren med $ denne variabelen i MongoDB i Ubuntu 20.04:

Vi brukte "AS" -parameteren for å gi variabelen et navn i de tidligere tilfellene. AS -parameteren er valgfri. Hvis vi setter dette feltet tomt, vil variabelnavnet være "dette" som standard.

Her har vi spesifisert matrisen i $ i operatør som velger ID -feltene fra dokumentene til den gitte samlingen innen $ Match. Deretter har $ -filteret to-parameter, inngang og kondisjon. Cond -parameteren har den større enn operatøren som henter merkene større enn 65. Vi har ikke brukt dem som en parameter, i stedet benyttet vi $$ dette feltnavnet.

Derfor ved å bruke $$ dette for å referere til feltet, fikk vi de samme resultatene som fra “som”. Utgangen er fornøyd med $ Match -tilstanden og $ filtertilstanden som er sett på bildet.

Konklusjon:

Dette er en MongoDB -filterguide. I denne artikkelen har vi gått gjennom definisjonen, syntaks og hvordan filtre fungerer i MongoDB. Eksempler og kodeimplementering er også gitt. Array -feltets elementer blir filtrert ved hjelp av MongoDB -filteroperatøren. For å hente data fra matriseelementer, har vi brukt flere forhold som $ GT, $ LT, $ GTE og $ LTE.