Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB按列分组_Mongodb - Fatal编程技术网

MongoDB按列分组

MongoDB按列分组,mongodb,Mongodb,我正在尝试做一些类似的事情 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之类的东西,但它不起作用 为了 我要走了 uncaught exception: gr

我正在尝试做一些类似的事情

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之类的东西,但它不起作用

为了

我要走了

uncaught exception: group command failed: { "errmsg" : "$reduce has to be set", "ok" : 0 }
我的mongoDB版本是2.0.8(因此我不能使用聚合框架)

根据结果,我不会得到分组列值的结果,而是

select count(*) from table
我做错了什么

编辑:(添加数据)

也许我用错了,但我想

[ { "a": 1, "b": 1, "c": 1 } ]

应该是一个对象,而不仅仅是一个字段名,并且在
reduce
行上有一个额外的尾随
}

请尝试以下方法:

db.table.group({
键:{列:1},
首字母:{sum:0},
reduce:函数(doc,prev){prev.sum+=1;}
})

查看文档:这是
$reduce
而不是
reduce
,这就是错误的字面意思。MongoDB接受
reduce
而不是
$reduce
,当我使用
$reduce
时,我得到了同样错误的结果:-(请注意,启用分片时,
不起作用。在这种情况下,您可能会被迫使用聚合框架或map reduce。@Betlista I更新了答案,以解决
的问题。
> 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 } ]