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.