我正在尝试做类似于
的事情select column, count(*)
from table
group by column
在mongodb中。
我尝试了
db.table.group( {
key: 'column',
initial: {sum:0},
reduce: function(doc, prev) { prev.sum += 1; } }
})
我想使用$ sum之类的东西,但它不起作用。
db.table.group( {
key: 'column'
} )
我得到
uncaught exception: group command failed: { "errmsg" : "$reduce has to be set", "ok" : 0 }
我的mongodb版本是2.0.8(所以我不能使用聚合框架)。
根据结果,我没有得到分组列值的结果,而是
的结果select count(*) from table
我在做什么错?
编辑:(添加了数据)
> db.table.find()
{ "_id" : ObjectId("50e180ce9449299428db83e8"), "column" : "a", "cnt" : 1 }
{ "_id" : ObjectId("50e180d09449299428db83e9"), "column" : "b", "cnt" : 2 }
{ "_id" : ObjectId("50e180d19449299428db83ea"), "column" : "c", "cnt" : 3 }
> db.table.group( { key: 'column', initial: { sum: 0}, reduce: function(doc, prev) { prev.sum += 1; } } )
[ { "sum" : 3 } ]
也许我以错误的方式使用它,但我希望
[ { "a": 1, "b": 1, "c": 1 } ]
key
应该是一个对象,而不仅仅是字段名称,并且在reduce
行上有额外的尾随}
。
而是尝试一下:
db.table.group({
key: {column: 1},
initial: {sum:0},
reduce: function(doc, prev) { prev.sum += 1; }
})