Различни стойности са тези стойности с премахнати излишни дубликати. С други думи, отделните стойности са уникални стойности.
В MongoDB има няколко начина, по които можем да върнем различни стойности в заявка. Тази статия представя 3 начина за връщане на различни стойности в mongo shell.
Примерни данни
Примерите на тази страница използват следната колекция, наречена 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() Метод
В MongoDB, db.collection.distinct() методът намира отделните стойности за определено поле в една колекция или изглед и връща резултатите в масив.
Пример:
db.pets.distinct( "type" ) Резултат:
[ "Bat", "Cat", "Dog" ]
Тези три стойности са отделните стойности за type поле в горните документи.
pets част просто наименува колекцията, за която да върне отделните стойности.
db.collection.distinct() method е метод за обвивка на обвивката за distinct команда (по-долу).
distinct Команда
В MongoDB, distinct командата aggregation намира отделните стойности за определено поле в една колекция.
Той връща документ, който съдържа масив от различни стойности, както и вграден документ със статистически данни за заявката и плана на заявката.
db.runCommand ( { distinct: "pets", key: "type" } ) Резултат:
{ "values" : [ "Bat", "Cat", "Dog" ], "ok" : 1 } Можем да видим, че се връщат едни и същи различни стойности, освен този път те са в документ, който съдържа и друга информация.
$group Оператор за агрегиране
В зависимост от вашите нужди, можете да използвате и $group оператор за агрегиране за връщане на различни стойности.
Пример:
db.pets.aggregate( [ { $group : { _id : "$type" } } ] ) Резултат:
{ "_id" : "Cat" }
{ "_id" : "Bat" }
{ "_id" : "Dog" } В този случай отделните стойности се връщат в отделни документи.
Този подход може да бъде полезен, ако очаквате резултатите ви да са големи. Ако вашите резултати са по-големи от максималния размер на BSON (16 мегабайта към момента на писане), може да се наложи да използвате този подход.