sql >> Database teknologi >  >> NoSQL >> MongoDB

3 måder at returnere distinkte værdier i MongoDB

Distinkte værdier er de værdier, hvor redundante dubletter er fjernet. Med andre ord er særskilte værdier unikke værdier.

I MongoDB er der et par måder, hvorpå vi kan returnere forskellige værdier i en forespørgsel. Denne artikel præsenterer 3 måder at returnere forskellige værdier i mongo-skallen.

Eksempel på data

Eksemplerne på denne side bruger følgende samling kaldet pets :

{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 }
{ "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 }
{ "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 }
{ "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 }
{ "_id" : 5, "name" : "Bruce", "type" : "Bat", "weight" : 3 }
{ "_id" : 6, "name" : "Fetch", "type" : "Dog", "weight" : 17 }
{ "_id" : 7, "name" : "Jake", "type" : "Dog", "weight" : 30 }

Den distinct() Metode

I MongoDB er db.collection.distinct() metoden finder de distinkte værdier for et specificeret felt på tværs af en enkelt samling eller visning og returnerer resultaterne i en matrix.

Eksempel:

db.pets.distinct( "type" )

Resultat:

[ "Bat", "Cat", "Dog" ]

Disse tre værdier er de forskellige værdier for type felt i ovenstående dokumenter.

pets del navngiver blot den samling, som de forskellige værdier skal returneres fra.

db.collection.distinct() metode er en shell-indpakningsmetode for distinct kommando (nedenfor).

Den distinct Kommando

I MongoDB er distinct aggregeringskommandoen finder de forskellige værdier for et specificeret felt på tværs af en enkelt samling.

Det returnerer et dokument, der indeholder en række af de forskellige værdier, samt et indlejret dokument med forespørgselsstatistik og forespørgselsplanen.

db.runCommand ( { distinct: "pets", key: "type" } )

Resultat:

{ "values" : [ "Bat", "Cat", "Dog" ], "ok" : 1 }

Vi kan se, at de samme distinkte værdier returneres, bortset fra at denne gang er de i et dokument, der også indeholder de andre oplysninger.

$group Aggregationsoperatør

Afhængigt af dine behov kan du også bruge $group aggregeringsoperator for at returnere distinkte værdier.

Eksempel:

db.pets.aggregate( [ { $group : { _id : "$type" } } ] )

Resultat:

{ "_id" : "Cat" }
{ "_id" : "Bat" }
{ "_id" : "Dog" }

I dette tilfælde returneres de forskellige værdier i separate dokumenter.

Denne tilgang kan være nyttig, hvis du forventer, at dine resultater er store. Hvis dine resultater er større end den maksimale BSON-størrelse (16 megabyte i skrivende stund), skal du muligvis bruge denne fremgangsmåde.


  1. Hurtig personsøgning med MongoDB

  2. Hvorfor har Mongoose både skemaer og modeller?

  3. Forstå latency ved hjælp af Redis-Cli

  4. Sådan genereres unikt objekt-id i mongodb