MongoDB distinkt spørring

MongoDB distinkt spørring
Den "distinkte" funksjonen til MongoDB blir kastet av for å identifisere hver plate unikt, ignorere duplikatene og bare vise de unike. Derfor hjelper denne guiden deg med å bruke den distinkte () funksjonsspørsmålet på MongoDB -konsollen.

Eksempel 1: Vis de unike feltverdiene fra flere poster

Før du gjør noe i MongoDB -skallet, må du sørge for at databasen din har sin samling i seg som også har noen poster; Samlinger fungerer som tabeller i MongoDB. Hvis du ikke har en, kan du generere det innenfor MongoDB-kommandolinjeverktøyet ved å bruke den enkle "CreateCollection" -metoden i instruksjonen som starter med "DB" -tnøkkelordet. Argumentet om en CreateCollection () -metode tar navnet på en samling som en "unik" streng.

Test> DB.CreateCollection ("Unik")

Uten å ha noen poster i databasen, vil vi ikke kunne utføre transaksjonene gjennom spørsmål. Derfor, etter opprettelsen av en tom "unik" samling i MongoDB, setter vi inn noen poster i den. For innsetting av flere poster om gangen, kan "Sett inn" -funksjonen til MongoDB kastes av med navnet på den "unike" samlingen. For å sette inn flere poster, hold alle postene i de firkantede parentesene “[]” mens du bruker “” krøllete braketter for å skille en fra en annen innenfor de firkantede parentesene. Foreløpig setter vi inn totalt 8 poster, som hver har tre felt - id, navn og alder. Disse postene legges perfekt til siden utdataene som vises i det vedlagte bildet, viser bekreftelsen. Det er gjentatte "samme" verdier for "Navn" -feltet og "alder" -feltet et sted i disse 8 postene.

Test> DB.Unik.Sett inn ([id: 1, navn: "Ana", alder: 40, id: 2, navn: "Bryan", alder: 40,
... id: 3, navn: "Paul", alder: 44, id: 4, navn: "Bryan", alder: 40,
... id: 5, navn: "Paul", alder: 40, id: 6, navn: "Paul", alder: 45,
... id: 7, navn: "Bryan", alder: 20, id: 8, navn: "Peter", alder: 45])

Du kan finne og vise de nylig innsatte postene fra databasesamlingen din veldig enkelt ved å kaste av "Finn" -funksjonen i instruksjonen. Denne funksjonen bruker nøkkelordet “DB” etterfulgt av det "unike" samlingsnavnet og "Finn" -funksjonen med de tomme parentesene.

Test> DB.Unik.finne()

Nå som vi har en samling med mange poster i seg, kan vi bruke den "unike" samlingen i illustrasjonen vår for å diskutere bruken av en "distinkt" spørring. Derfor starter spørringen med det samme "DB" nøkkelordet etterfulgt av det "unike" samlingsnavnet og slutter med den "distinkte" funksjonen. Den distinkte () -funksjonen inneholder navnet på et spesifikt felt i en samling i sitt argument for å få og vise de unike postene som ikke gjentas selv en gang. La oss si at vi ønsker å se på alle de unike platene fra "Navnet" -feltet i "Unique" -samlingen. Derfor bruker vi "Navn" -feltet i argumentet om "distinkte" funksjon innen følgende listede instruksjon. Utgangen fra denne spørringen viser bare navnene fra "Navn" -feltet som er unike. Hvis et navn gjentas mange ganger, viser det det bare en gang i utgangen som et kryss.

Test> DB.Unik.distinkt ("navn");

Det samme trinnet gjentas for "alder" -feltet i den "unike" samlingen for å få alle aldre unikt uten repetisjon. Til gjengjeld får vi fire unike verdier på rad.

Test> DB.Unik.distinkt ("alder");

Eksempel 2: Vis de unike postene fra nestede flere poster

Nå som vi er ferdige med enkeltlinjekortene for å få de unike verdiene fra det aktuelle feltet i en samling, er vi klare til å få de unike verdiene fra de nestede postene til en "unik" samling som er et dokument innen et dokumentfelt. For det oppdaterer vi den "unike" samlingen og legger til fire nye poster, som hver inneholder den nestede "data" -verdien i den. "Data" -feltet inneholder to felt i det og lager et nestet dokument i MongoDB. Den samme "sett inn" -funksjonen brukes i spørringen med det "unike" samlingsnavnet. Alle disse fire postene er lagt til vellykket. Anerkjennelsesutgangen demonstreres i følgende bilde:

Test> DB.Unik.Sett inn ([id: 9, navn: "Tim", data: Age: 40, score: 50,
... id: 10, navn: "Tim", data: alder: 40, poengsum: 55,
... id: 11, navn: "TEM", data: alder: 10, poengsum: 50,
... id: 12, navn: "Tom", data: alder: 40, poengsum: 55])

Etter å ha kjørt "Finn" -funksjonsinstruksjonen til MongoDB, får vi elementene i en "unik" samling på skallskjermen i stigende rekkefølge av "ID" -feltet. Når vi beveger oss ned i listen over 12 poster, finner vi de nylig lagt til 4 postene i denne utgangen som vist i det følgende. Nå som du har sett på de fire siste postene av den unike samlingen og har en opplevelse med å identifisere de unike postene gjennom en-linjesplater, vil du lære om å få de unike postene fra feltene fra dokumenttypen.

Test> DB.Unik.finne()

La oss si at du vil få alle de unike verdiene fra "poengsum" -feltet i et "Data" -felt av dokumenttype i en "unik" -samling. For å bruke den "distinkte" funksjonen for å identifisere og vise alle verdiene en gang (ikke gjentatt i det hele tatt), må vi bruke navnet på et dokumentformat "data" -felt sammen med det interne feltet som skal vises, som er “Score ”. Begge disse feltene er koblet gjennom en "prikk" for å få verdiene til det interne feltet gjennom det eksterne feltnavnet. Den generelle syntaksen til en spørring er den samme - "DB" -tnøkkelordet etterfulgt av et "unikt" samlingsnavn og "distinkte" funksjonen med argumentene. Utgangen for utførelsen av denne spørringen viser bare to verdier fra resten av de fire ved bare å velge 1 verdi fra duplikatpostene.

Test> DB.Unik.distinkt ("data.Score ")

Det samme skjer for "alder" -feltet som ligger inne i feltet "Data" -felt ". Følgende utgang viser bare to poster fra resten av de fire postene:

Test> DB.Unik.distinkt ("data.Alder")

Konklusjon

Ved å sammenligne våre virkelige scenarier med programmeringsfeltet, opplevde vi den enkleste og enkleste reisen for å få kunnskap om den "distinkte" funksjonen til MongoDB i denne artikkelen. Guidenes innledende avsnitt handler om den sammenligningen og bruken av den distinkte () -funksjonen i MongoDB -miljøet. Gjennom de demonstrerte illustrasjonene vet vi nå hvordan vi bruker den distinkte funksjonen for å få verdiene bare en gang ved et skall.