请帮我把这个select语句转换成MongoDB:
Select Name, Max(Value) From table1 Group By Name
我阅读了这个文档:http://www.mongodb.org/display/docs/aggregate#aggregate-group
但仍然不知道如何应用Max()方法而不是SUM()作为该文档。
谢谢.
var myresult = db.table1.aggregate([{
$group: {
_id:"$Name",
value: { $max: "$Value" }
}
}]);
print(myresult)
使用聚合框架:
db.table1.aggregate({$group:{'_id':'$name', 'max':{$max:'$value'}}},
{$sort:{'max':1}}).result
我创建了Mongo集合,如下所示。
{ "_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"}}
}
]);
我正在尝试选择一些不在我的中的属性。这可能吗? 如何从中获取CatId和持久属性? 如果我将它们添加到组中,就像,那么我的结果就会混乱。 我可以使用获得其他属性,如,但这些属性不是计算值。 数据示例: 希望将结果按如下方式分组:
问题内容: 可以在mongo db中像在SQL中那样选择集合的文档: 还是如果我有一个我必须一个一个地选择,然后重新组合结果? 问题答案: 简单 :) 摘自:http : //www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24in
问题内容: 我正在尝试熊猫的分组依据功能,特别是 由于gb有50个组,因此结果非常混乱,我只想探索前5个组的结果。 我找到了如何使用或选择单个组的方法(如何通过key访问datagroup的pandasgroup ),但没有找到直接选择多个组的方法。我能做的最好的事情是: 有没有更直接的方法? 问题答案: 你可以做类似的事情 虽然,我会采取不同的方法。您可以使用该对象快速获取组: 现在,您可以像字
我在这里找到了一个解决方案:如何使用ApacheCamel和MongoDB创建动态equals查询? 但这看起来需要做很多工作。难道Camel没有更简单的方法将值传递给MongoDB查询吗?我希望我们能传递Mongo使用的实际find({})语言。 以下是我的工作,一些日志显示了它在做什么:
抱歉发了这么长的帖子! 我有一个Mongo收藏,包含以下文档: 我想查询这些文档,并返回每个名称的最大值条目,因此我想要的结果集(顺序无关紧要)是: 如果我想在C#中做完全相同的事情,我会使用: 使用聚合管道,我已经达到了: 这给了我以下结果集: 如您所见,我有一个文档数组,每个文档都包含一个“_id”字段(名称)和一个“highest”字段(实际文档)。 这将用C表示为: 我想知道的是,是否可以
问题内容: 我是MSSQL用户,现在将数据库转换为MySQL。我在MySQL中编写以下查询: 我得到以下错误 如何用MySQL正确编写这样的查询? 问题答案: 使用CREATE TABLE SELECT语法。 http://dev.mysql.com/doc/refman/5.0/en/create-table- select.html