Je suis en train de faire quelque chose de similaire àgroupe MongoDB par colonne
select column, count(*)
from table
group by column
dans MongoDB.
J'ai essayé
db.table.group({
key: 'column',
initial: {sum:0},
reduce: function(doc, prev) { prev.sum += 1; } }
})
Je voulais utiliser quelque chose comme somme de $, mais il ne fonctionnait pas.
Pour
db.table.group({
key: 'column'
})
Je reçois
uncaught exception: group command failed: { "errmsg" : "$reduce has to be set", "ok" : 0 }
ma version MongoDB est 2.0.8 (donc je ne peux pas utiliser le cadre d'agrégation).
Selon résultat, je ne reçois pas le résultat des valeurs de colonnes groupées, mais pour résultat
select count(*) from table
Qu'est-ce que je fais mal?
modifier: (données ajoutées)
> 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 } ]
Peut-être que je l'utilise dans le mauvais sens, mais je pense
[ { "a": 1, "b": 1, "c": 1 } ]
vérifier les docs: http://docs.mongodb.org/manual/reference/commands/#group il est 'reduce' de $ pas' de reduce', qui est littéralement ce que cette erreur signifie. – Sammaye
MongoDB accepte 'reduce' au lieu de' $ reduce', et je reçois le même mauvais résultat quand j'utilise '$ reduce' :-( – Betlista
Sachez que' group' ne fonctionne pas lorsque le sharding est activé. cas, vous pouvez être forcé d'utiliser le framework d'agrégation ou map-reduce – ghik