2016-09-08 2 views
0

j'ai une collection avec cette structure:MongoDB cadre Aggregate Erreur

{ "_id" : "01002", "city" : "CUSHMAN", "loc" : [ -72.51564999999999, 42.377017 ], "pop" : 36963, "state" : "MA" } 

je veux utiliser le cadre Aggregate pour effectuer cette requête:

db.US.aggregate([{$group:{_id:{"state":"$state"}}, sum:{$sum:"$pop"}}]) 

I "m obtenir cette erreur: " La commande 'aggregate' a échoué: exception: un objet de spécification d'étape de pipeline doit contenir exactement un champ. (response: {"errmsg": "exception: Un objet de spécification d'étape de pipeline doit contenir exactement un champ.", "code": 16435, "ok": 0.0}) "

façon dont j'obtiens cette erreur, il ressemble à un très simple quelqu'un peut-il aider Merci

Répondre

3

Yep vos crochets étaient un peu détraqué

db.US.aggregate([{$group:{_id:{"state":"$state"}}, sum:{$sum:"$pop"}}]) 

changement.

db.US.aggregate([{$group:{_id:{"state":"$state"}, sum:{$sum:"$pop"}}}]) 

Edit: en fait ce qui est mieux:

db.US.aggregate([ 
    {$group:{_id:"$state", sum:{$sum:"$pop"}}} 
]) 

car il en résulte un document plat au lieu d'un tableau de ids:

{ "_id" : "MA", "sum" : 36963 } 
+0

Je vois, Merci !!! –

+0

S'il vous plaît voir l'édition pour une meilleure sortie. – dyouberg

+0

Vous avez absolument raison Merci encore –