与MongoDB Group using Ruby driver相关
如果我想在SQL中执行以下操作:
select page_id, count(page_id) from a_table group by page_id
我认为MongoDB的文档说
http://api.mongodb.org/ruby/current/Mongo/Collection.html#group-instance_method
group(key, condition, initial, reduce, finalize = nil)
# returns an array
所以从另一篇文章中,我正在使用:
Analytic.collection.group( "fucntion (x) return {page_id : x.page_id}",
nil,
{:count => 0},
"function(x, y) { y.count++ }" )
但它实际上会回来
[{"count"=>47.0}]
这是集合中记录(文档)的总数 . 以上是不正确的?我以为密钥可能是一个静态字符串
http://kylebanker.com/blog/2009/11/mongodb-count-group/
db.pageviews.group(
{
key: {'user.agent': true},
initial: {sum: 0},
reduce: function(doc, prev) { prev.sum += 1}
});
但它不在另一个stackoverflow帖子中 .
Update: 实际上,在上面的链接中,解决方案就像
Analytic.collection.group( ['page_id'], nil,
{:count => 0}, "function(x, y) { y.count++ }" )
工作,但只是想知道为什么这篇文章中的第一个方法不起作用 .
2 回答
第一个例子不起作用的原因是你拼错了“功能”作为“fucntion” . 以下应该有效:
我终于得到了它的工作
但后来我使用了Map / Reduce,因为Map / Reduce似乎是一种更通用,更强大的方法 .