2010-10-29 17 views
1

我在CouchDB中有两个数据库 - DB1的文档是用户数据 - 名称,电子邮件地址,用户名,密码,但在一个字段中存储了ID的保存列表在DB2其中用户项目被保存(包括用户名字段和一些文本框。从一个couchdb文档通过另一个ids中的数据拉取数据(Python)

Example DB1 Document (Users) 

     { 
    "_id": "bobsmith1000", 
    "_rev": "83-1e00173cac0e736c9988d3addac403de", 
    "first_name": "Bob", 
    "password": "$2a$12$sdZUkkyDnDePQFNarTTgyuUZS6DL13JvBk/k9iUa5jh08gWAS5hpm", 
    "second_name": "Smith", 
    "urls": null, 
    "email": "[email protected]", 
    "projects": [ 
     "ee5ccf56da22121fd71d892dbe051746", 
     "ee5ccf56da22121fd71d892dbe0526bb", 
     "ee5ccf56da22121fd71d892dbe053433", 
     "ee5ccf56da22121fd71d892dbe056c71", 
     "ee5ccf56da22121fd71d892dbe0579c3", 
     "ee5ccf56da22121fd71d892dbe05930d" 
    ] 
} 

Example DB2 Document (Projects) 

{ 
    "_id": "ee5ccf56da22121fd71d892dbe05930d", 
    "_rev": "1-c923fbe9de82318980c7778c4c089321", 
    "url": "http://harkmastering.s3.amazonaws.com/testprojects/testfolder.zip", 
    "username": "bobsmith1000", 
    "time": "2010-10-29 07:13:47.377085", 
    "file_size": "5.2 MB" 
} 

我试图用Python语言编写(视图使用瓶Web框架和Python的CouchDB库),将检查DB1,抓住所有项目id,然后转到db2,并以批处理方式为每个带有匹配ID的文档抽取url,time,filesize,这样我就可以将该数据放在一个表中。

我今年才开始编程,这涉及到我只能想象的技术。任何人都可以帮我找到解决方案吗?

类感谢

+0

您是否使用Flask-CouchDB库的Python CouchDB库(自使用Flask以来)?只是想知道... – JoshFinnie 2010-10-29 19:49:11

+0

只是普通的Python CouchDB库。不是Flask之一.. – Handloomweaver 2010-11-01 11:01:24

回答

1

除非你有很大的原因在不同的DBS分裂您的文档,这似乎是没有的情况下,根据你的问题,你应该如何让他们都在同一个数据库,并有一些财产上该文档可以识别它们的类型(如“类型:用户”和“类型:项目”)。

通过这种方式,您可以在单个couchdb视图中获得理想的结果,而不会有太多麻烦。在你的视图映射函数中,你只需要发出诸如[“username”,0]和[“username”,“projectname”]之类的键。在Javascript将是:

function(doc) { 
if (doc.type == "user") { 
    emit([doc._id,0],null); 
} else if(doc.type == "project") { 
    emit([doc.username,doc._id],null); 
} 
} 

他们可以查询该视图,并有一个有组织的一套文件。

相关问题