gpt4 book ai didi

mongodb - 在 mongodb 中选择 Max() 和 "group by"

转载 作者:IT老高 更新时间:2023-10-28 13:04:56 25 4
gpt4 key购买 nike

请帮我把这个选择语句转换成 mongodb:

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

我阅读了这份文件:http://www.mongodb.org/display/DOCS/Aggregation#Aggregation-Group

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

谢谢。

最佳答案

我已经按如下方式创建了 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 }

然后通过使用以下代码,我将其按名称和 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
}
]

使用聚合框架要简单得多。通过使用聚合框架,您可以使用以下代码获得相同的结果。

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

关于mongodb - 在 mongodb 中选择 Max() 和 "group by",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10612660/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com