gpt4 book ai didi

couchdb - 我可以为每个数据库创建多个集合吗?

转载 作者:行者123 更新时间:2023-12-03 21:43:53 24 4
gpt4 key购买 nike

从 mongo 切换到 pouchdb(使用 Cloudant),我喜欢“每个用户一个数据库”的概念,但是有没有办法为每个数据库创建多个集合/表?

例子

- Peter  
- History
- Settings
- Friends
- John
- History
- Settings
- Friends

等等...

最佳答案

Couchdb 没有集合的概念。但是,您可以在文档中结合 Couchdb View 使用类型标识符来获得类似的结果。

类型标识符

当您在 Couchdb 中保存文档时,添加一个指定类型的字段。例如,你会像这样存储一个 friend :

{
_id: "XXXX",
type: "Friend",
first_name: "John",
...
}

你会像这样存储历史:
{
_id: "XXXX",
type: "History",
url: "http://www.google.com",
...
}

这两个文档都在同一个数据库中,如果您查询该数据库中的所有文档,那么您将同时收到这两个文档。

浏览次数

您可以创建按类型过滤的 View ,然后直接查询这些 View 。例如,创建一个 View 来检索 friend ,像这样(在 Cloudant 中,您可以添加新的设计文档,您可以直接复制粘贴):
{
"_id" : "_design/friends",
"views" : {
"all" : {
"map" : "function(doc){ if (doc.type && doc.type == 'Friend') { emit(doc._id, doc._rev)}}"
}
}
}

让我们扩展 map 功能:
function(doc) {
if (doc.type && doc.type == "Friend") {
emit(doc._id, doc._rev);
}
}

本质上,这个 map 函数是说只将类型为 ==“Friend”的文档与这个 View 相关联。现在,我们可以查询这个 View ,并且只会返回 friend :
http://SERVER/DATABASE/_design/friends/_view/all

哪里 friends = 设计文档的名称和 all = View 名称。替换 SERVER与您的服务器和 DATABASE使用您的数据库名称。

您可以在此处找到有关 View 的更多信息:

https://wiki.apache.org/couchdb/Introduction_to_CouchDB_views

关于couchdb - 我可以为每个数据库创建多个集合吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36913228/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com