Selezionare Max () con “group by” in mongodb

Per favore aiutami a convertire questa frase selezionata in mongodb:

Select Name, Max(Value) From table1 Group By Name 

Ho letto questo documento: http://www.mongodb.org/display/DOCS/Aggregation#Aggregation-Group

ma ancora non so come applicare il metodo Max () invece SUM () come quel documento.

Grazie.

Ho creato Mongo Collection come segue.

 { "_id" : ObjectId("4fb36bfd3d1c88bfa15103b1"), "name" : "bob", "value" : 5 } { "_id" : ObjectId("4fb36c033d1c88bfa15103b2"), "name" : "bob", "value" : 3 } { "_id" : ObjectId("4fb36c063d1c88bfa15103b3"), "name" : "bob", "value" : 7 } { "_id" : ObjectId("4fb36c0c3d1c88bfa15103b4"), "name" : "john", "value" : 2 } { "_id" : ObjectId("4fb36c103d1c88bfa15103b5"), "name" : "john", "value" : 4 } { "_id" : ObjectId("4fb36c143d1c88bfa15103b6"), "name" : "john", "value" : 8 } { "_id" : ObjectId("4fb36c163d1c88bfa15103b7"), "name" : "john", "value" : 6 } 

Quindi, utilizzando il seguente codice, lo raggruppo con il loro nome e il valore massimo (valore)

 db.table1.group( {key: {name:true}, reduce: function(obj,prev) { if (prev.maxValue < obj.value) { prev.maxValue = obj.value; } }, initial: { maxValue: 0 }} ); 

Il risultato è mostrato come

 [ { "name" : "bob", "maxValue" : 7 }, { "name" : "john", "maxValue" : 8 } ] 

È molto più semplice con la struttura di aggregazione. È ansible ottenere lo stesso risultato con il seguente codice utilizzando il framework di aggregazione.

 db.table1.aggregate( {$group:{_id:"$name", "maxValue": {$max:"$value"}}} ); 

Utilizzando il framework di aggregazione:

 db.table1.aggregate({$group:{'_id':'$name', 'max':{$max:'$value'}}}, {$sort:{'max':1}}).result 

Dal momento che MongoDB supporta la funzione mapReaduce di seguito dovrebbe fare.

 db.employee.insert({name:"Tejas",Value:2}) db.employee.insert({name:"Tejas",Value:3}) db.employee.insert({name:"Varma",Value:1}) db.employee.insert({name:"Varma",Value:6}) var map=function(){ var key={name:this.name}; var value={value:this.Value}; emit(key,value); }; var reduce=function(key,values){ var max=-1; values.forEach(function(value){ if(max==-1){ max=value['value']; } if(max 

db.employee.mapReduce (mappa, ridurre, {out: {inline: 1}});

 var myresult = db.table1.aggregate( [ { $group: _id:"$Name", value: { $max: "$Value" } } } ]); print(myresult)