請幫我轉換這個選擇句話的MongoDB:選擇MAX()與「分組依據」 MongoDB中
Select Name, Max(Value) From table1 Group By Name
我閱讀本文件:http://www.mongodb.org/display/DOCS/Aggregation#Aggregation-Group
,但仍然不知道如何申請最多()方法改爲SUM()作爲該文檔。
謝謝。
請幫我轉換這個選擇句話的MongoDB:選擇MAX()與「分組依據」 MongoDB中
Select Name, Max(Value) From table1 Group By Name
我閱讀本文件:http://www.mongodb.org/display/DOCS/Aggregation#Aggregation-Group
,但仍然不知道如何申請最多()方法改爲SUM()作爲該文檔。
謝謝。
由於MongoDB支持mapreduce函數應該做的。
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<value['value']){
max=value['value'];
}
});
return {max:max};
};
db.employee.mapReduce(map,reduce,{out:{inline:1}});;
非常感謝你 – spidermanit
我已經創建了Mongo Collection,如下所示。
{ "_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 }
然後通過使用下面的代碼I組它可以通過名稱和max(值)
db.table1.group(
{key: {name:true},
reduce: function(obj,prev) {
if (prev.maxValue < obj.value) {
prev.maxValue = obj.value;
}
},
initial: { maxValue: 0 }}
);
被示出其結果作爲
[
{
"name" : "bob",
"maxValue" : 7
},
{
"name" : "john",
"maxValue" : 8
}
]
它與聚合更加簡單框架。通過使用聚合框架,您可以使用以下代碼獲得相同的結果。
db.table1.aggregate(
{$group:{_id:"$name", "maxValue": {$max:"$value"}}}
);
非常感謝你。 – spidermanit
嗨帕爾文。這種方法可以檢查最大日期,我的意思是最新的日期? – spidermanit
對不起,以便延遲迴復。是的,也可以將日期與此方法進行比較。你只需要用obj.value替換obj.date –
使用聚合框架:
db.table1.aggregate({$group:{'_id':'$name', 'max':{$max:'$value'}}},
{$sort:{'max':1}}).result
var myresult = db.table1.aggregate([
{ $group:
_id:"$Name",
value: { $max: "$Value" }
}
}
]);
print(myresult)
沒試過,'減少:功能(OBJ,PREV){如果(prev.c