Различни стойности са тези стойности с премахнати излишни дубликати. С други думи, отделните стойности са уникални стойности.
В 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 мегабайта към момента на писане), може да се наложи да използвате този подход.