1

我在 CouchDB 中有两个数据库 - DB1 的文档是用户数据 - 姓名、电子邮件地址、用户名、密码,但在一个字段中,我存储了保存在 DB2 中的 ID 列表,其中保存了用户项目(包含用户名字段和一些文本字段。

    Example DB1 Document (Users)

       {
   "_id": "bobsmith1000",
   "_rev": "83-1e00173cac0e736c9988d3addac403de",
   "first_name": "Bob",
   "password": "$2a$12$sdZUkkyDnDePQFNarTTgyuUZS6DL13JvBk/k9iUa5jh08gWAS5hpm",
   "second_name": "Smith",
   "urls": null,
   "email": "bob@smith.com",
   "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 中编写一个视图(使用 Flask Web 框架和 Python Couchdb 库),它将检查 db1,获取所有项目 id,然后转到 db2 并以批量方式提取 url、时间、文件大小每个文档都有匹配的 id,所以我可以将这些数据放在一个表中。

我今年早些时候才开始编程,这涉及到我只能想象的技术。谁能帮我找到解决方案?

亲切的感谢

4

1 回答 1

1

除非您有充分的理由将文档拆分为不同的数据库,否则根据您的问题,情况似乎并非如此,您应该将它们全部保存在同一个数据库中,并在文档上有一些属性来识别它们的类型(如“类型:用户”和“类型:项目”)。

这样,您就可以在单个 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);
 }
}

他们可以查询该视图并拥有一组有组织的文档。

于 2010-10-29T18:07:36.663 回答