Wartości odrębne to wartości z usuniętymi nadmiarowymi duplikatami. Innymi słowy, wartości odrębne są wartościami unikalnymi.
W MongoDB istnieje kilka sposobów na zwrócenie różnych wartości w zapytaniu. W tym artykule przedstawiono 3 sposoby zwracania różnych wartości w powłoce mongo.
Przykładowe dane
W przykładach na tej stronie użyto następującej kolekcji o nazwie 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 } distinct() Metoda
W MongoDB db.collection.distinct() Metoda znajduje różne wartości dla określonego pola w pojedynczej kolekcji lub widoku i zwraca wyniki w postaci tablicy.
Przykład:
db.pets.distinct( "type" ) Wynik:
[ "Bat", "Cat", "Dog" ]
Te trzy wartości to odrębne wartości dla type w powyższych dokumentach.
pets część po prostu nazywa kolekcję, z której mają zostać zwrócone odrębne wartości.
db.collection.distinct() method jest metodą opakowującą powłoki dla distinct polecenie (poniżej).
distinct Polecenie
W MongoDB distinct Polecenie agregacji znajduje różne wartości dla określonego pola w jednej kolekcji.
Zwraca dokument zawierający tablicę różnych wartości, a także osadzony dokument ze statystykami zapytań i planem zapytań.
db.runCommand ( { distinct: "pets", key: "type" } ) Wynik:
{ "values" : [ "Bat", "Cat", "Dog" ], "ok" : 1 } Widzimy, że zwracane są te same odrębne wartości, ale tym razem znajdują się one w dokumencie, który zawiera również inne informacje.
$group Operator agregacji
W zależności od potrzeb możesz również skorzystać z grupy $group operator agregacji do zwracania odrębnych wartości.
Przykład:
db.pets.aggregate( [ { $group : { _id : "$type" } } ] ) Wynik:
{ "_id" : "Cat" }
{ "_id" : "Bat" }
{ "_id" : "Dog" } W takim przypadku odrębne wartości są zwracane w osobnych dokumentach.
Takie podejście może być przydatne, jeśli spodziewasz się dużych wyników. Jeśli Twoje wyniki są większe niż maksymalny rozmiar BSON (16 megabajtów w momencie pisania), może być konieczne zastosowanie tego podejścia.