2011年5月24日火曜日

PyMongoでGroup byした総和を求める

PyMongoでGroup byした総和を求めるには、以下のコードのようにgroupを使用します。

# coding=UTF-8
from pymongo import *
conn = Connection("localhost", 27017)
conn.local.drop_collection("sales_by_year_area")
col = conn.local.sales_by_year_area
# データをinsert
col.insert({"year":2009, "area":"North", "sales":100})
col.insert({"year":2009, "area":"South", "sales":150})
col.insert({"year":2010, "area":"North", "sales":200})
col.insert({"year":2010, "area":"South", "sales":250})
col.insert({"year":2011, "area":"North", "sales":300})
col.insert({"year":2011, "area":"South", "sales":350})
# 地域毎の総売上を表示する
for obj in col.group(
key={"area":True},
condition={},
initial={"csum":0},
reduce="function(obj,prev){prev.csum += obj.sales;}"):
 print str(obj[u"area"]) + ":" + str(obj[u"csum"])

補足
ubuntuで以下のコマンドでMongoDBとPyMongoのインストールができます。
sudo apt-get install mongodb
sudo apt-get install python-pymongo

動作環境
Python 2.6.6, PyMongo 1.7, mongodb1.4.4

0 件のコメント:

コメントを投稿