Home

Tags

MongoDB group

2010-05-27 mongodb

Пример группировки

# coding: utf8

from pymongo import Connection
from pymongo.code import Code

con = Connection()
con.drop_database('test')
db = con.test

db.posts.insert({ 'name':'linux', 'col':3, 'active':1 })
db.posts.insert({ 'name':'mac',   'col':2, 'active':0 })
db.posts.insert({ 'name':'linux', 'col':3, 'active':1 })
db.posts.insert({ 'name':'win',   'col':4, 'active':0 })
db.posts.insert({ 'name':'unix',  'col':5, 'active':1 })
db.posts.insert({ 'name':'linux', 'col':6, 'active':1 })
db.posts.insert({ 'name':'unix',  'col':7, 'active':1 })
db.posts.insert({ 'name':'mac',   'col':8, 'active':1 })

res = db.posts.group(
            key = { 'name':True },
            condition = { 'active':1 },
            reduce = 'function(obj,prev) { prev.sum += obj.col; prev.count++; }',
            initial = { 'sum':0, 'count':0 },
            finalize = 'function(out) { out.avg = out.sum / out.count; }'
            );
for i in res:
    print i