rol*_*usa 28 ruby mongodb mongodb-ruby
我一直在帮助获取mongo文档列的最高值.我可以对它进行排序并获得顶部/底部,但我很确定有更好的方法可以做到这一点.
我尝试了以下(和不同的组合):
transactions.find("id" => x).max({"sellprice" => 0})
Run Code Online (Sandbox Code Playgroud)
但它一直在抛出错误.除了排序和获得顶部/底部之外,有什么好的方法呢?
谢谢!
Mic*_*ile 48
max()无法按照您在SQL中为Mongo所期望的方式工作.这可能会在将来的版本中发生变化,但截至目前,max,min将与索引键一起使用,主要在内部进行分片.
请参阅http://www.mongodb.org/display/DOCS/min+and+max+Query+Specifiers
不幸的是,现在获得最大值的唯一方法是对该值进行排序desc并取第一个.
transactions.find("id" => x).sort({"sellprice" => -1}).limit(1).first()
Run Code Online (Sandbox Code Playgroud)
小智 19
排序可能有点过分.你可以做一个小组
db.messages.group(
{key: { created_at:true },
cond: { active:1 },
reduce: function(obj,prev) { if(prev.cmax<obj.created_at) prev.cmax = obj.created_at; },
initial: { cmax: **any one value** }
});
Run Code Online (Sandbox Code Playgroud)
小智 8
db.collectionName.aggregate(
{
$group :
{
_id : "",
last :
{
$max : "$sellprice"
}
}
}
)
Run Code Online (Sandbox Code Playgroud)
用于计算聚合的示例mongodb shell代码.
请参阅组的mongodb手册条目(许多应用程序):: http://docs.mongodb.org/manual/reference/aggregation/group/#stage._S_group
在下面,将$ vars替换为您的集合键和目标变量.
db.activity.aggregate(
{ $group : {
_id:"$your_collection_key",
min: {$min : "$your_target_variable"},
max: {$max : "$your_target_variable"}
}
}
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
34793 次 |
| 最近记录: |