MongoDB $ rekkevidde

MongoDB $ rekkevidde
MongoDB $ Range -operatøren er en tilpasset operatør som genererer en rekke tall basert på en gitt startverdi, sluttverdi og trinnverdi. Denne operatøren er et nyttig verktøy for å generere sekvenser av tall for bruk i datamanipulering eller analyse. Det brukes vanligvis som en komponent i $ prosjektoperatøren i en samlet rørledning, for å lage et nytt felt i utdataene som inneholder en rekke tall. Det tar totalt tre argumenter: startverdien, feltnavnet som rekkefeltet vil bli brukt på, og trinnnummeret for å øke verdien til det når det siste punktet for en feltverdi. Denne guiden kommer til å forklare og demonstrere bruken av "rekkevidden" -operatøren av MongoDB ved hjelp av noen eksempler.

Eksempel # 01:

Forsikre deg om at MongoDB -databasen din allerede er satt opp på maskinen din. Hvis ikke, kan du prøve å installere den sammen med opprettelsen av en samling i den. Samlingen må ha poster. Vi satte opp MongoDB -databasen vår ved å lage en samling som heter “Dummy” og la noen dokumenter til den. Det er på tide å bruke rekkeoperatøren på en dummy -samling. Før det vil vi vise dokumentene vi har i dummy -samlingen vår. Instruksjonen vist nedenfor utføres i MongoDB -skallet for dette formålet. Kommandoen bruker metoden “Finn ()” for å søke etter alle dokumenter i en samling som heter “Dummy” med de tomme krøllete tannreguleringene “”. Ingen spesifikke søkekriterier blir brukt, så alle poster i "Dummy" -samlingen vises.

Utgangen fra kommandoen er en rekke dokumenter, hver post som inneholder flere felt. Feltene inkluderer en unik objektid "_id" for hver post, byfeltet representerer navnet på en by, tellefeltet representerer et numerisk, DESC -feltet representerer en streng som beskriver byen, og det tilfeldige feltet representerer en tilfeldig numerisk verdi.

Test> DB.Dummy.finne()
[°,
_id: ObjectId ("63c8a1f94ff07039aa6cdf6c"), by: 'Los Angeles', Count: 3, Desc: 'Mid-sized City', Random: 5,
_id: ObjectId ("63c8a1f94ff07039aa6cdf6d"), by: 'Italia', telle: 10, desc: 'vakreste og overfylt', tilfeldig: 12,
°,
_id: ObjectId ("63c8a1f94ff07039aa6cdf6f"), by: 'Delhi', Count: 3, desc: 'mellomstor by', tilfeldig: 22]

Det er på tide å bruke "rekkevidden" -feltet på alle postene til en mongoDB "dummy" -samling for å få antallet tall. Kommandoen for anvendelse av rekkevidden er vedlagt under. Den bruker “Aggregate ()” -metoden for å utføre en samlet operasjon på en samling som heter “Dummy”. "$ Project" -operatøren brukes til å omforme dokumentene i en samling ved å inkludere eller ekskludere felt og kan også lage nye felt. I dette tilfellet brukes operatøren "$ prosjekt" til å lage et nytt felt kalt "hvile" som er en matrise som inneholder en rekke tall fra 0 til verdien av "tilfeldig" -feltet i hvert dokument, og øker med 10. Utgangen fra kommandoen viser en rekke poster, restefeltet representerer en ny matrise som inneholder en rekke tall basert på verdien av "tilfeldig" felt, og "by" -feltet med navnet på en spesifikk by. Restpunktet kan gjettes fra området som er gitt i "hvile" array -feltet.

Test> DB.Dummy.Aggregate ([$ Project: City: 1, "REST": $ Range: [0, "$ Random", 10]])
[_id: ObjectId ("63c8a1f94ff07039aa6cdf6b"), by: 'Texas', hvile: [0, 10, 20, 30, 40, 50, 60, 70, 80],
_id: ObjectId ("63c8a1f94ff07039aa6cdf6c"), by: 'Los Angeles', hvile: [0],
_id: ObjectId ("63c8a1f94ff07039aa6cdf6d"), by: 'Italia', hvile: [0, 10],
_id: ObjectId ("63c8a1f94ff07039aa6cdf6e"), by: 'Istanbul', hvile: [0, 10, 20, 30, 40, 50, 60, 70, 80, 90],
_id: ObjectId ("63c8a1f94ff07039aa6cdf6f"), by: 'Delhi', hvile: [0, 10, 20]]

Eksempel # 02:

La oss se på et annet eksempel for å bruke rekkefeltet på MongoDB -kolleksjonen. Samlingen "test" er blitt brukt i dette eksemplet så langt. "Finn" -instruksjonen vedlagt nedenfor har vist innholdet i denne samlingen. Utgangen fra kommandoen inneholder den unike identifikatoren som er tildelt hvert dokument av MongoDB, feltet "S" representerer utgangspunktnummeret og feltet "E" representerer sluttpunktnummeret.

Test> DB.Test.finne()
[_id: ObjectId ("63cb65f0Bef5Adfc81df628e"), S: 2, E: 8,
_id: ObjectId ("63cb65f0Bef5Adfc81df628f"), S: 1, E: 5,
_id: ObjectId ("63cb65f0Bef5Adfc81df6290"), S: 4, E: 9]

Utgangen viser at matrisen opprettes ved hjelp av $ Range -operatøren, som tar to argumenter: startverdien og sluttverdien. Startverdien er "S" -feltet og sluttverdien er "E" -feltet i dokumentet. Den endelige output av denne kommandoen er en liste over dokumenter, hver med en _id, et "S" -felt, et "E" -felt og et "R" -felt som inneholder en rekke heltall. Heltallene i "r" -feltet er antallet av antall mellom "s" og "e" -feltene for hvert dokument: hver med et økning på 1. Dette er fordi vi ikke tildelte en økningsverdi for Operatøren. Så "rekkevidden" -operatøren tok "1" som økningsverdien av seg selv.

Test> DB.Test.Aggregate ([$ prosjekt: s: 1, e: 1, "r": $ range: ["$ s", "$ e"]])
[_id: ObjectId ("63cb65f0Bef5Adfc81df628e"), S: 2, E: 8, R: [2, 3, 4, 5, 6, 7],
_id: ObjectId ("63CB65F0Bef5Adfc81df628f"), S: 1, E: 5, R: [1, 2, 3, 4],
_id: ObjectId ("63CB65F0Bef5ADFC81DF6290"), S: 4, E: 9, R: [4, 5, 6, 7, 8]]

Eksempel # 03:

I alle illustrasjonene ovenfor har vi bare brukt rekkeviddeoperatøren på samlingene som har heltall-type verdier. Vi får en feil når vi bruker rekkevidden på strengtypeverdien. Hva om vi bruker det på feltverdiene for desimal-type? La oss sjekke at ved å bruke den på en ny samling som heter “Float” i vår MongoDB -database. Finn () -funksjonen som brukes på "Float" -samlingen viser de 5 settene med dokumenter i den. Hvert dokument inneholder sin unike identifikator, strengtype-felt "Tittel", og "Felt-typen" Alder "som inneholder desimalpunktverdier.

Test> DB.Flyte.finne()
[_id: ObjectId ("63cb5f26Bef5Adfc81df6289"), tittel: 'Nina', alder: 45.6,
_id: ObjectId ("63cb5f26Bef5Adfc81df628a"), tittel: 'Ana', alder: 22.75,
_id: ObjectId ("63cb5f26Bef5Adfc81df628b"), tittel: 'Eden', alder: 35.9,
_id: ObjectId ("63cb5f26Bef5Adfc81df628c"), tittel: 'Rock', alder: 82.5,
_id: ObjectId ("63cb5f26Bef5Adfc81df628d"), tittel: 'lia', alder: 27]

Nå har vi brukt "Range" -operatøren på float -samlingen ved å bruke den samlede funksjonen for å få antallet tall med et økning på 11 for "alder" -feltet. Denne koden genererer imidlertid en feil fordi operatøren på $ området krever at sluttverdien er et 32-bits heltall, men verdien av "alder" -feltet er et flytende punktnummer og den kan ikke konverteres til en 32- litt heltall. Dette viser at vi ikke kan bruke rekkeoperatøren på noen annen datatype, bortsett fra heltalldatatypen i MongoDB -databasen.

Test> DB.Flyte.Aggregate ([$ Project: Tittel: 1, "REST": $ Range: [0, "$ Age", 11]]))

MongoServerError: PlanExecutor Feil under aggregering :: Forårsaket av :: $ Range krever en sluttverdi som kan representeres som et 32-bits heltall, funnet verdi: 45.6.

Konklusjon

Vi har orientert konseptet med at Operatøroperatøren ble brukt i MongoDB Aggregate -funksjonen. Etter å ha definert bruken av rekkevidden, har vi forklart bruken av den ved hjelp av tre forskjellige eksempler på MongoDB -kommandoer i skallet. Den første illustrasjonen demonstrerer bruken av rekkevidden på feltet for heltallstype for å få sekvensen av tall med det spesifikke økningsnummeret. De andre illustrasjonene viser hvordan en rekkeviddeoperatør kan brukes på start- og sluttfeltet uten å bruke økningsnummeret. Mens det siste eksemplet viser at rekkevidden ikke fungerer med andre datatyper enn heltall: flyter og strenger.