Abe*_*ier 11 couchdb cloudant pouchdb
从蒙戈切换到pouchdb(与Cloudant),我喜欢"每个用户一个数据库"的概念,但有一个方法来创建每个数据库的多个集合/表?
例
- Peter
- History
- Settings
- Friends
- John
- History
- Settings
- Friends
Run Code Online (Sandbox Code Playgroud)
等等...
谢谢
mar*_*atx 16
Couchdb没有集合的概念.但是,您可以使用文档上的类型标识符以及Couchdb视图来获得类似的结果.
类型标识符
在Couchdb中保存文档时,添加指定类型的字段.例如,你会像这样存储一个朋友:
{
_id: "XXXX",
type: "Friend",
first_name: "John",
...
}
Run Code Online (Sandbox Code Playgroud)
你会存储这样的历史记录:
{
_id: "XXXX",
type: "History",
url: "http://www.google.com",
...
}
Run Code Online (Sandbox Code Playgroud)
这两个文档都在同一个数据库中,如果您查询该数据库上的所有文档,那么您将同时收到这两个文档.
查看
您可以创建筛选类型的视图,然后直接查询这些视图.例如,创建一个视图来检索这样的朋友(在Cloudant中,您可以添加新的设计文档,您可以直接复制并粘贴它):
{
"_id" : "_design/friends",
"views" : {
"all" : {
"map" : "function(doc){ if (doc.type && doc.type == 'Friend') { emit(doc._id, doc._rev)}}"
}
}
}
Run Code Online (Sandbox Code Playgroud)
让我们扩展地图功能:
function(doc) {
if (doc.type && doc.type == "Friend") {
emit(doc._id, doc._rev);
}
}
Run Code Online (Sandbox Code Playgroud)
本质上,这个map函数只是说文档与这个类型为=="Friend"的视图相关联.现在,我们可以查询此视图,只返回朋友:
http://SERVER/DATABASE/_design/friends/_view/all
Run Code Online (Sandbox Code Playgroud)
其中friends=设计文档的all名称和=视图的名称.替换SERVER为您的服务器和DATABASE您的数据库名称.
您可以在此处找到有关视图的更多信息:
https://wiki.apache.org/couchdb/Introduction_to_CouchDB_views
| 归档时间: |
|
| 查看次数: |
4961 次 |
| 最近记录: |