请帮我把这个select语句转成mongodb:
Select Name, Max(Value) From table1 Group By Name我阅读了这个文档:www.mongodb/display/DOCS/Aggregation#Aggregation-Group
但仍然不知道如何应用 Max() 方法而不是 SUM() 作为该文档.
谢谢.
解决方案我创建了 Mongo Collection 如下.
{ "_id";: ObjectId("4fb36bfd3d1c88bfa15103b1"), "name":鲍勃",价值";: 5 }{ "_id";:ObjectId(4fb36c033d1c88bfa15103b2"),名称":鲍勃",价值";: 3 }{ "_id";: ObjectId("4fb36c063d1c88bfa15103b3"), "name":鲍勃",价值";: 7 }{ "_id";:ObjectId(4fb36c0c3d1c88bfa15103b4"),名称":约翰",价值";: 2 }{ "_id";: ObjectId("4fb36c103d1c88bfa15103b5"), "name":约翰",价值";: 4 }{ "_id";: ObjectId("4fb36c143d1c88bfa15103b6"), "name":约翰",价值";: 8 }{ "_id";: ObjectId("4fb36c163d1c88bfa15103b7"), "name":约翰",价值";: 6 }然后通过使用以下代码,我将其按名称和 max(value) 分组
db.table1.group({key: {name:true},减少:函数(obj,prev){if (prev.maxValue < obj.value) {prev.maxValue = obj.value;}},初始:{ maxValue:0 }});结果如图
[{姓名":鲍勃",最大值": 7},{姓名":约翰",最大值": 8}]使用聚合框架要简单得多.通过使用聚合框架,您可以通过以下代码获得相同的结果.
db.table1.aggregate([{$group:{_id:"$name", "maxValue": {$max:"$value"}}}]);Please help me to convert this select sentence to mongodb:
Select Name, Max(Value) From table1 Group By NameI read this document: www.mongodb/display/DOCS/Aggregation#Aggregation-Group
but still dont know how to apply Max() method instead SUM() as that document.
Thank you.
解决方案I have created Mongo Collection as follows.
{ "_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 }Then by using the following code I group it by their name and max(value)
db.table1.group( {key: {name:true}, reduce: function(obj,prev) { if (prev.maxValue < obj.value) { prev.maxValue = obj.value; } }, initial: { maxValue: 0 }} );The result is shown as
[ { "name" : "bob", "maxValue" : 7 }, { "name" : "john", "maxValue" : 8 } ]It is much simpler with the aggregation framework. You can get the same result with the following code by using aggregation framework.
db.table1.aggregate([ { $group:{_id:"$name", "maxValue": {$max:"$value"}} } ]);
更多推荐
使用“分组依据"选择 Max()在 mongodb 中
发布评论