Eindeutige Werte sind solche Werte, bei denen redundante Duplikate entfernt wurden. Mit anderen Worten, eindeutige Werte sind eindeutige Werte.
In MongoDB gibt es einige Möglichkeiten, wie wir unterschiedliche Werte in einer Abfrage zurückgeben können. Dieser Artikel stellt 3 Möglichkeiten vor, unterschiedliche Werte in der Mongo-Shell zurückzugeben.
Beispieldaten
Die Beispiele auf dieser Seite verwenden die folgende Sammlung namens 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 }
Das distinct()
Methode
In MongoDB die db.collection.distinct()
-Methode findet die unterschiedlichen Werte für ein bestimmtes Feld in einer einzelnen Sammlung oder Ansicht und gibt die Ergebnisse in einem Array zurück.
Beispiel:
db.pets.distinct( "type" )
Ergebnis:
[ "Bat", "Cat", "Dog" ]
Diese drei Werte sind die unterschiedlichen Werte für den type
Feld in den obigen Dokumenten.
Die pets
part benennt einfach die Sammlung, für die die unterschiedlichen Werte zurückgegeben werden sollen.
Die db.collection.distinct()
Methode ist eine Shell-Wrapper-Methode für distinct
Befehl (unten).
Der distinct
Befehl
In MongoDB ist das distinct
Der Aggregationsbefehl findet die unterschiedlichen Werte für ein angegebenes Feld in einer einzelnen Sammlung.
Es gibt ein Dokument zurück, das ein Array der unterschiedlichen Werte enthält, sowie ein eingebettetes Dokument mit Abfragestatistiken und dem Abfrageplan.
db.runCommand ( { distinct: "pets", key: "type" } )
Ergebnis:
{ "values" : [ "Bat", "Cat", "Dog" ], "ok" : 1 }
Wir können sehen, dass dieselben unterschiedlichen Werte zurückgegeben werden, außer dass sie sich diesmal in einem Dokument befinden, das auch die anderen Informationen enthält.
Die $group
Aggregationsoperator
Je nach Bedarf können Sie auch die $group
verwenden Aggregationsoperator, um eindeutige Werte zurückzugeben.
Beispiel:
db.pets.aggregate( [ { $group : { _id : "$type" } } ] )
Ergebnis:
{ "_id" : "Cat" } { "_id" : "Bat" } { "_id" : "Dog" }
In diesem Fall werden die eindeutigen Werte in separaten Dokumenten zurückgegeben.
Dieser Ansatz kann nützlich sein, wenn Sie große Ergebnisse erwarten. Wenn Ihre Ergebnisse größer sind als die maximale BSON-Größe (16 Megabyte zum Zeitpunkt des Schreibens), müssen Sie möglicherweise diesen Ansatz verwenden.