|
#!/usr/bin/env python
# -*- encoding:utf-8 -*-
from pymongo import Connection
from bson.code import Code
from bson.son import SON
mongoconn = Connection('192.168.0.203',27017)
db = mongoconn['things']["user_info"]
db.drop()
db.insert({"uid":"a123","type":"man","class":2,"score":{"math":80,"english":60,"chinese":90}})
db.insert({"uid":"b123","type":"female","class":2,"score":{"math":100,"english":90,"chinese":80}})
db.insert({"uid":"c123","type":"man","class":2,"score":{"math":60,"english":50,"chinese":88}})
db.insert({"uid":"d123","type":"female","class":2,"score":{"math":79,"english":87,"chinese":78}})
db.insert({"uid":"e123","type":"female","class":1,"score":{"math":79,"english":87,"chinese":78}})
map = Code("function() {"
" emit(this.class,this.score);"
"}"
)
reduce = Code("function(key,values){"
" var result={math:0,english:0,chinese:0};"
" for (var i = 0; i < values.length; i++) {"
" result.math += values.math;"
" result.english += values.english;"
" result.chinese += values.chinese;"
" return result;"
"}"
)
results = db.map_reduce(map,reduce,"class_user")
a = db.find({"class":2})
b = a.count()
for i in results.find({"_id":2}):
print "*********************************************************"
print i
print "math average score is :",i["value"]["math"]/b
print "english average score is :",i["value"]["english"]/b
print "chinese avarege score is :",i["value"]["chinese"]/b |
|
|