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.
Odrębne wartości to te, w których usunięto nadmiarowe duplikaty. Wartości odrębne są wartościami unikalnymi. Na przykład, jeśli masz 2 lub 3 dokumenty o tej samej wartości, distinct
polecenie zwróci tylko jedną wartość.
db.collection.distinct()
jest metodą opakowującą powłoki dla distinct
polecenie.
Przykład
Załóżmy, że mamy kolekcję o nazwie pets
z następującymi dokumentami.
{ "_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 }
Możemy użyć distinct()
metoda zwracania różnych typów zwierząt.
db.pets.distinct( "type" )
Wynik:
[ "Bat", "Cat", "Dog" ]
Więc chociaż są cztery psy i dwa koty, tablica zawiera tylko po jednym z nich. distinct()
metoda usunęła zduplikowane wartości.
Oryginalny dokument ma tylko jeden bat, więc distinct()
metoda tego nie zmienia – nie było zduplikowanych wartości do deduplikacji.
Osadzone dokumenty
Możesz użyć notacji kropkowej, aby uzyskać różne wartości z osadzonego pola
Załóżmy, że mamy kolekcję o nazwie products
który zawiera następujące dokumenty:
{ "_id" : 1, "product" : { "name" : "Shirt", "color" : "White" }, "sizes" : [ "S", "M", "L" ] } { "_id" : 2, "product" : { "name" : "Shirt", "color" : "Green" }, "sizes" : [ "S", "M", "XL" ] } { "_id" : 3, "product" : { "name" : "Shirt", "color" : "White" }, "sizes" : [ "S", "M", "L" ] } { "_id" : 4, "product" : { "name" : "Shorts", "color" : "Green" }, "sizes" : [ "M", "XS" ] } { "_id" : 5, "product" : { "name" : "Shorts", "color" : "Brown" }, "sizes" : [ "S", "M" ] } { "_id" : 6, "product" : { "name" : "Cap", "color" : "Purple" }, "sizes" : [ "M" ] } { "_id" : 7, "product" : { "name" : "Shoes", "color" : "Brown" }, "sizes" : [ "S", "M", "L" ] } { "_id" : 8, "product" : { "name" : "Shirt", "color" : "White" }, "sizes" : [ "M", "L", "XL" ] } { "_id" : 9, "product" : { "name" : "Cap", "color" : "Green" }, "sizes" : [ "M", "L" ] }
Możemy użyć następującego zapytania, aby zwrócić różne wartości nazw produktów.
db.products.distinct(
"product.name"
)
Wynik:
[ "Cap", "Shirt", "Shoes", "Shorts" ]
Moglibyśmy zrobić to samo dla color
pole.
db.products.distinct(
"product.color"
)
Wynik:
[ "Brown", "Green", "Purple", "White" ]
Uzyskaj odrębne wartości z tablicy
Oto jak używać distinct()
metoda, aby uzyskać różne wartości z powyższej tablicy.
db.products.distinct( "sizes" )
Wynik:
[ "L", "M", "S", "XL", "XS" ]
Użyj distinct()
z zapytaniem
Możesz podać zapytanie, aby określić dokumenty, z których mają być pobierane różne wartości. Aby to zrobić, dodaj zapytanie po polu.
Przykład:
db.products.distinct( "product.name", { sizes: "S" } )
Wynik:
[ "Shirt", "Shoes", "Shorts" ]
Więcej informacji
db.collection.distinct()
metoda akceptuje również collation
parametr, który pozwala określić specyficzne dla języka reguły porównywania ciągów, takie jak reguły dotyczące wielkości liter i znaków akcentu.
Więcej informacji znajdziesz w dokumentacji MongoDB.