首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CouchDB-Python中的Map和reduce函数

CouchDB-Python中的Map和reduce函数
EN

Stack Overflow用户
提问于 2014-10-19 14:23:03
回答 2查看 1.7K关注 0票数 0

如何在CouchDB-Python中使用map和reduce函数,因为下面的代码没有返回任何内容?

如果不需要,是否也可以禁用reduce功能?

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

发布于 2014-10-20 13:55:04

你很少给出你想要得到的细节。但我从代码中推断出,您想要唯一的名称。如果是这样的话,你肯定需要减少数据。

您的问题是您对数据进行了过多的分组。应该使用group_level=exact (或group=true,这是一个同义词)调用视图。

票数 1
EN

Stack Overflow用户

发布于 2014-10-20 12:44:10

是的,可以禁用reduce,这正是您需要的:

代码语言:javascript
复制
db.view('users/get_unames', reduce=False)

当reduce处于活动状态时,您只需要返回一行,只有一个值(300,您的行数)和空键。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26447916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档