使用“分组依据"选择 Max()在 mongodb 中

编程入门 行业动态 更新时间:2024-10-25 02:26:00
本文介绍了使用“分组依据"选择 Max()在 mongodb 中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

请帮我把这个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 Name

I 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 中

本文发布于:2023-11-22 13:59:40,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1617717.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:quot   Max   mongodb

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!