В MongoDB, db.collection.distinct()
методът намира отделните стойности за определено поле в една колекция или изглед и връща резултатите в масив.
Различни стойности са тези с премахнати излишни дубликати. Различните стойности са уникални стойности. Например, ако имате 2 или 3 документа с една и съща стойност, distinct
командата ще върне само една стойност.
db.collection.distinct()
е метод за обвивка на обвивката за distinct
команда.
Пример
Да предположим, че имаме колекция, наречена 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()
метод за връщане на отделните типове домашни любимци.
db.pets.distinct( "type" )
Резултат:
[ "Bat", "Cat", "Dog" ]
Така че, въпреки че има четири кучета и две котки, масивът съдържа само едно от всяко. distinct()
метод премахна дублиращите се стойности.
Оригиналният документ има само един bat и така distinct()
методът не променя това – нямаше дублиращи се стойности за дедупиране.
Вградени документи
Можете да използвате нотация с точки, за да получите различни стойности от вградено поле
Да предположим, че имаме колекция, наречена products
който съдържа следните документи:
{ "_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" ] }
Можем да използваме следната заявка, за да върнем различни стойности за имената на продуктите.
db.products.distinct(
"product.name"
)
Резултат:
[ "Cap", "Shirt", "Shoes", "Shorts" ]
Бихме могли да направим същото за color
поле.
db.products.distinct(
"product.color"
)
Резултат:
[ "Brown", "Green", "Purple", "White" ]
Вземете различни стойности от масив
Ето как да използвате distinct()
метод за получаване на отделните стойности от горния масив.
db.products.distinct( "sizes" )
Резултат:
[ "L", "M", "S", "XL", "XS" ]
Използвайте distinct()
със заявка
Можете да предоставите заявка, за да посочите документите, от които да извлечете отделните стойности. За да направите това, добавете заявката след полето.
Пример:
db.products.distinct( "product.name", { sizes: "S" } )
Резултат:
[ "Shirt", "Shoes", "Shorts" ]
Повече информация
db.collection.distinct()
методът също така приема collation
параметър, който ви позволява да зададете специфични за езика правила за сравнение на низове, като правила за главни букви и знаци за ударение.
Вижте документацията на MongoDB за повече информация.