选择带有"group by"的Max().在mongodb中 [英] Select Max() with "group by" in mongodb

查看:89
本文介绍了选择带有"group by"的Max().在mongodb中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

请帮助我将此选择语句转换为mongodb:

Please help me to convert this select sentence to mongodb:

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

我阅读了此文档: http://www.mongodb.org/display /DOCS/Aggregation#Aggregation-Group

但仍然不知道如何将Max()方法而不是SUM()用作该文档.

but still dont know how to apply Max() method instead SUM() as that document.

谢谢.

推荐答案

我已经如下创建了Mongo Collection.

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 }

然后通过使用以下代码,将其按名称和max(value)分组

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 }}
);

结果显示为

[
    {
        "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"}}}
);

这篇关于选择带有"group by"的Max().在mongodb中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆