Los valores distintos son aquellos valores con duplicados redundantes eliminados. En otras palabras, los valores distintos son valores únicos.
En MongoDB, hay algunas formas en que podemos devolver valores distintos en una consulta. Este artículo presenta 3 formas de devolver valores distintos en el shell mongo.
Datos de muestra
Los ejemplos en esta página usan la siguiente colección llamada 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 }
El distinct()
Método
En MongoDB, el db.collection.distinct()
El método encuentra los distintos valores para un campo específico en una sola colección o vista y devuelve los resultados en una matriz.
Ejemplo:
db.pets.distinct( "type" )
Resultado:
[ "Bat", "Cat", "Dog" ]
Estos tres valores son los valores distintos para el type
campo en los documentos anteriores.
Las pets
part simplemente nombra la colección de la que devolver los valores distintos.
db.collection.distinct()
method es un método contenedor de shell para distinct
comando (abajo).
El distinct
Comando
En MongoDB, el distinct
El comando de agregación encuentra los distintos valores para un campo específico en una sola colección.
Devuelve un documento que contiene una matriz de valores distintos, así como un documento incrustado con estadísticas de consulta y el plan de consulta.
db.runCommand ( { distinct: "pets", key: "type" } )
Resultado:
{ "values" : [ "Bat", "Cat", "Dog" ], "ok" : 1 }
Podemos ver que se devuelven los mismos valores distintos, excepto que esta vez están en un documento que también contiene la otra información.
El $group
Operador de agregación
Dependiendo de sus necesidades, también puede usar el $group
operador de agregación para devolver valores distintos.
Ejemplo:
db.pets.aggregate( [ { $group : { _id : "$type" } } ] )
Resultado:
{ "_id" : "Cat" } { "_id" : "Bat" } { "_id" : "Dog" }
En este caso, los distintos valores se devuelven en documentos separados.
Este enfoque podría ser útil si espera que sus resultados sean grandes. Si sus resultados son más grandes que el tamaño máximo de BSON (16 megabytes en el momento de escribir este artículo), es posible que deba utilizar este enfoque.