sql >> Base de Datos >  >> NoSQL >> MongoDB

3 formas de devolver valores distintos en MongoDB

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.