2017-07-19 3 views
0

J'ai écrit le code suivant qui répertorie correctement ma collection d'adresses par numéro de mois avec un nombre, mais ce sont les totaux et je dois ajouter efficacement une condition qui ne renvoie que des résultats où "type = vert". Je ne peux pas calculer comment compter uniquement quand il correspond à ces critères.Comment interroger MongoDB et regrouper le résultat par mois en utilisant Pymongo?

result = db.address.aggregate([{"$group":{"_id": { "$month": "$date" }, 
         "count":{"$sum":1} } } ]) 

list_of_months = ["nothing", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"] 

result_sorted = sorted(result, key=lambda x: x['_id'], reverse=False) 
for res in result_sorted: 
    print(list_of_months[res['_id']], ": ", res['count']) 

Répondre

1

Utilisation $match:

result = db.address.aggregate([{"$match": {"type": "green"}}, 
           {"$group": {"_id": {"$month": "$date"}, 
              "count": {"$sum": 1}}}]) 
+0

Salut - Je viens d'essayer cela et il a échoué. Je pense que vous avez fait une faute de frappe entre le type et le vert en mettant une virgule pas un deux-points. Pourriez-vous mettre à jour et je marquerai comme correct? Merci de votre aide. –

+0

Merci, mis à jour! –