從mongo切換到pouchdb(使用Cloudant),我喜歡「每個用戶一個數據庫」的概念,但是有沒有辦法爲每個數據庫創建多個集合/表?我可以爲每個數據庫創建多個集合嗎?
例
- Peter
- History
- Settings
- Friends
- John
- History
- Settings
- Friends
等等
感謝
從mongo切換到pouchdb(使用Cloudant),我喜歡「每個用戶一個數據庫」的概念,但是有沒有辦法爲每個數據庫創建多個集合/表?我可以爲每個數據庫創建多個集合嗎?
例
- Peter
- History
- Settings
- Friends
- John
- History
- Settings
- Friends
等等
感謝
的CouchDB沒有收藏的概念。但是,您可以使用文檔上的類型標識符和Couchdb視圖一起獲得類似的結果。
類型標識符
當您保存在CouchDB中的文檔添加一個指定類型的字段。例如,你將存儲的朋友,像這樣:
{
_id: "XXXX",
type: "Friend",
first_name: "John",
...
}
你將存儲的歷史是這樣的:
{
_id: "XXXX",
type: "History",
url: "http://www.google.com",
...
}
這兩個文件是在同一數據庫中,如果您查詢所有文檔在那個數據庫上,你會收到兩個。
查看
您可以創建視圖上的類型,然後過濾器直接查詢這些看法。例如,創建一個視圖來檢索的朋友像這樣(在Cloudant你可以去添加新的設計文檔,你可以直接複製並粘貼此):
{
"_id" : "_design/friends",
"views" : {
"all" : {
"map" : "function(doc){ if (doc.type && doc.type == 'Friend') { emit(doc._id, doc._rev)}}"
}
}
}
讓我們展開地圖功能:
function(doc) {
if (doc.type && doc.type == "Friend") {
emit(doc._id, doc._rev);
}
}
本質上這個映射函數說只將文檔關聯到此視圖的類型==「朋友」。現在,我們可以查詢這個視圖,只有朋友將返回:
http://SERVER/DATABASE/_design/friends/_view/all
凡friends
=設計文檔和視圖的all
=名字命名。用您的數據庫名稱替換SERVER
與您的服務器和DATABASE
。
你可以在這裏找到有關視圖的更多信息:
https://wiki.apache.org/couchdb/Introduction_to_CouchDB_views
你可以看看relational-pouch這樣的事情。否則你可以做「每個用戶3個數據庫」。 ;)
我可能不完全明白你在這裏需要什麼,但總的來說,你可以在CouchDB/Cloudant/PouchDB中以3種不同的方式實現你所描述的內容。
通常,您的數據模式決策歸結爲併發性。你提到PouchDB,所以你可能有一個單線程客戶端,選項1很好很容易?