query - unique true mongodb
Obtener valores de registros distintos (5)
¿Hay alguna forma de consultar objetos con valores diferentes en algún campo? Por ejemplo tengo registros:
{ id : 1, name : "my_name", salary : 1200 }
{ id : 2, name : "my_name", salary : 800 }
{ id : 3, name : "john", salary : 500 }
Consulta: encuentra todos con NOT_THE_SAME (nombre)
Solo quiero registros con ID 1 y 3 porque especifiqué que no quiero registros con el mismo valor en el name
campo o 2 y 3, no importa en esta situación.
Versión de Mongo DB> 3.4
db.test.distinct("name")
Versión de la base de datos de Mongo <3.4
db.test.aggregate([{$group: {_id: "$name", salary: {$max: "$salary"}}}])
Puede usar db.collection.distinct
para recuperar una matriz de valores únicos:
> db.test.distinct("name")
[ "my_name", "john" ]
También puede utilizar una oración distinta con la colección filtrada. Por ejemplo, puede obtener distintos valores de nombres de salarios superiores a 800 con la siguiente consulta:
db.test.distinct("name", { "salary": { $gt: 800 } })
db.runCommand ( {
distinct: "CollectionName",
key: "key",
query: { "createdDate": {
$gte:new ISODate("2017-04-04T23:59:59Z"),
$lte:new ISODate("2017-04-25T23:59:59Z")}} } )
esta consulta ayuda a encontrar datos en la recopilación, recuperará el valor de la clave de todos los documentos que cumplan la condición de entre la fecha
db.test.aggregate([{$group: {_id: "$name", salary: {$max: "$salary"}}}])
Debe enumerar todos los nombres con sus salarios .
$max
devuelve el salario más alto por elemento. También puede elegir $first
etc, consulte https://docs.mongodb.com/manual/reference/operator/aggregation/group/#accumulator-operator .