Database 使用多个斜杠将文档保存到CouchDB URL

Database 使用多个斜杠将文档保存到CouchDB URL,database,nosql,couchdb,Database,Nosql,Couchdb,我第一次接触NoSQL DBs是通过Firebase,在Firebase中,我通常将json数据存储到一个url中,比如:category,然后再将其他内容存储到一个url中,比如category/subcategory 在CouchDB中尝试同样的方法时,我遇到了一个问题 例如,我保存了一个简单的对象,如: {"_id":"one"} 到 这和预期的一样。然后我尝试保存以下内容 {"_id":"two"} 到 我收到以下错误消息: {"error":"not_found","reason

我第一次接触NoSQL DBs是通过Firebase,在Firebase中,我通常将json数据存储到一个url中,比如:category,然后再将其他内容存储到一个url中,比如category/subcategory

在CouchDB中尝试同样的方法时,我遇到了一个问题

例如,我保存了一个简单的对象,如:

{"_id":"one"} 

这和预期的一样。然后我尝试保存以下内容

{"_id":"two"}

我收到以下错误消息:

{"error":"not_found","reason":"Document is missing attachment"}

显然,当您在url中使用多个斜杠时,coach将资源理解为附件。如果是这样的话,如何创建数据具有多个级别的数据库,例如地理/大陆/非洲/埃及?

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 );
  }
}
{"_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 );
  }
}