Я пытаюсь сделать что-то похожее на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; } }
})
Я хотел бы использовать что-то вроде $ суммы, но она не работает.
Для
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 } ]
ЗАКАНЧИВАТЬ документы: http://docs.mongodb.org/manual/reference/commands/#group это '$ reduce' не' reduce', что буквально что означает эта ошибка. – Sammaye
MongoDB принимает 'reduce' вместо' $ reduce', и я получаю такой же неправильный результат, когда я использую '$ reduce' :-( – Betlista
Имейте в виду, что' group' не работает, когда включена функция sharding. case, вы можете быть вынуждены использовать структуру агрегации или уменьшить карту. – ghik