如何在CouchDB-Python中使用map和reduce函数,因为下面的代码没有返回任何内容?
如果不需要,是否也可以禁用reduce功能?
import couchdb
# $ sudo systemctl start couchdb
# http://localhost:5984/_utils/
def fill_data(users_no):
for i in range(users_no):
doc = {
'_id': str(i),
'uname': "name_" + str(i),
}
db.save(doc)
if __name__ == "__main__":
server = couchdb.Server()
db = server.create("test-pagination")
fill_data(300)
map_fun = """
function(doc) {
emit(doc.uname, 1);
}
"""
reduce_fun ="_count"
design = { 'views': {
'get_unames': {
'map': map_fun,
'reduce': reduce_fun
}
} }
db["_design/users"] = design
uname_list = db.view('users/get_unames')
print uname_list
for r in uname_list :
print r.key发布于 2014-10-20 13:55:04
你很少给出你想要得到的细节。但我从代码中推断出,您想要唯一的名称。如果是这样的话,你肯定需要减少数据。
您的问题是您对数据进行了过多的分组。应该使用group_level=exact (或group=true,这是一个同义词)调用视图。
发布于 2014-10-20 12:44:10
是的,可以禁用reduce,这正是您需要的:
db.view('users/get_unames', reduce=False)当reduce处于活动状态时,您只需要返回一行,只有一个值(300,您的行数)和空键。
https://stackoverflow.com/questions/26447916
复制相似问题