1

我有两个实体:

  1. 公司 [companyId (PK)] 和
  2. 员工 [employeeId (PK), companyId (PK, FK)]。

无论如何我可以在 CouchDB 中组织我的文档,以便我可以使用以下格式查询员工($CouchDB 是我的 CouchDB 实例的 URL)?

$CouchDB/company/{companyId}/employee/{employeeId}

我知道我们可以将 Company 和 Employee 文档混合在一个数据库中,并使用元字段(例如:“_type”)和 map/reduce 来查询我们想要的文档。“map/reduce”方法没有错,只是想仔细检查一下,这样我就不会错过任何东西。

非常感谢,

4

2 回答 2

1

不能以这种方式组织您的文档。我同意,这是一个非常好的布局,但简短的回答是 CouchDB 不支持。

文档 ID(和文档 URL)是flat。它们都共享相同的命名空间。另一种说法是"_id"文档中的值必须是它的主键。

于 2012-04-23T13:48:37.663 回答
0

虽然有一些怪癖,但文档_id可以包含/. 然后company/COMPANYID/employee/EMPLOYEEID是一个有效的身份证。

我经常使用以下方案来构建_id文档(我更喜欢_):

EntityName_ENTITYID

有了这个_id

  • 我不需要_type字段;
  • 我得到所有的公司_all_docs?startkey="Company_"&endkey="Company_\fff0"
  • 我让公司内的所有员工都有_all_docs?startkey="Employee_COMPANYID_"&endkey="Employee_COMPANYID_\fff0";
  • 我避免不同实体之间的身份冲突。
于 2012-04-24T10:53:23.207 回答