我第一次接触NoSQL DBs是通过Firebase,在那里我通常将json数据存储到如下url: category ,然后将其他内容存储到url,如 category/subcategory .
category
category/subcategory
在CouchDB中尝试同样的操作时,我遇到了一个问题。
例如,我保存了一个简单的对象,如:
{"_id":"one"}
到
database/category
按预期工作。然后我尝试保存以下内容
{"_id":"two"}
database/category/subcategory
我收到以下错误消息:
{"error":"not_found","reason":"Document is missing attachment"}
显然,当您在url中使用多个斜杠时,Coach将资源理解为附件。如果是这样的话,如何创建数据具有多个级别的数据库,如 Geography/Continents/Africa/Egypt 例如
Geography/Continents/Africa/Egypt
CouchDB不适合您描述的用法。CouchDB是一个平面文档存储。
您应该将结构展平,以便将其存储在CouchDB中。
{"_id":"country-es", "type":"geography", "country":"Spain", "continent":"Europe" } {"_id":"country-fr", "type":"geography", "country":"France", "continent":"Europe" }
然后使用视图,以便有一种按层次查询它的机制。
function (doc) { if (doc.type == "geography") { emit([doc.continent,doc.country], doc._id ); } }