Ottieni valori di record distinti

C’è un modo per interrogare oggetti con gli stessi valori su un campo? Ad esempio, ho Records:

{ id : 1, name : "my_name", salary : 1200 } { id : 2, name : "my_name", salary : 800 } { id : 3, name : "john", salary : 500 } 

Query: trova tutto con NOT_THE_SAME (nome)

Voglio solo i record con ID 1 e 3 perché ho specificato che non voglio record con lo stesso valore nel name campo o 2 e 3, non importa in questa situazione.

È ansible utilizzare db.collection.distinct per recuperare un array di valori univoci:

 > db.test.distinct("name") [ "my_name", "john" ] 

Puoi anche utilizzare una frase distinta con raccolta filtrata. Ad esempio, è ansible ottenere valori distinti dei nomi dagli stipendi superiori a 800 con la seguente query:

 db.test.distinct("name", { "salary": { $gt: 800 } }) 
 db.test.aggregate([{$group: {_id: "$name", salary: {$max: "$salary"}}}]) 

dovrebbe elencare tutti i nomi con i loro stipendi .

$max restituisce lo stipendio più alto per elemento. Puoi anche scegliere $first ecc., Consultare https://docs.mongodb.com/manual/reference/operator/aggregation/group/#accumulator-operator .

 db.runCommand ( { distinct: "CollectionName", key: "key", query: { "createdDate": { $gte:new ISODate("2017-04-04T23:59:59Z"), $lte:new ISODate("2017-04-25T23:59:59Z")}} } ) 

questa query aiuta a trovare i dati nella raccolta, recupererà il valore della chiave da tutti i documenti che soddisfano la condizione tra la data