2010-05-27 mongodb map_reduce
Пример для подсчета тегов
# coding: utf8
from pymongo import Connection
from pymongo.code import Code
con = Connection()
con.drop_database('test')
db = con.test
db.posts.insert({ 'tags':['linux','prog'] })
db.posts.insert({ 'tags':['prog','mac'] })
db.posts.insert({ 'tags':['linux'] })
db.posts.insert({ 'tags':['linux'] })
map = Code(""" function() {
this.tags.forEach(
function(x) {
emit(x, 1);
}
);
}""")
reduce = Code("""function (key, values) {
var total = 0;
for(var i in values) total += values[i];
return total;
}""")
for x in db.posts.inline_map_reduce(map, reduce):
print x
{u'_id': u'linux', u'value': 3.0}
{u'_id': u'mac', u'value': 1.0}
{u'_id': u'prog', u'value': 2.0}
db.posts.map_reduce(map, reduce).find()