MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

3 Möglichkeiten, eindeutige Werte in MongoDB zurückzugeben

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.