1

私は2つのエンティティを持っています:

  1. 会社 [companyId (PK)] および
  2. 従業員 [employeeId (PK)、companyId (PK、FK)]。

次の形式を使用して従業員にクエリを実行できるように、CouchDB でドキュメントを整理する方法はありますか ( $CouchDB は CouchDB インスタンスへの URLです)。

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

Company と Employee の両方のドキュメントを 1 つのデータベースに混在させ、メタ フィールド (例: "_type") と map/reduce を使用して必要なドキュメントをクエリできることを私は知っています。「マップ/リデュース」アプローチに問題はありません。何も見逃さないように再確認したいだけです。

どうもありがとう、

4

2 に答える 2

1

そのように文書を整理することはできません。これは非常に優れたレイアウトであることには同意しますが、簡単に言えば、CouchDB はそれをサポートしていないということです。

ドキュメント ID (およびドキュメント URL) はフラットです。それらはすべて同じ名前空間を共有します。別の言い方をすれば"_id"、ドキュメント内の値はその主キーでなければならないということです。

于 2012-04-23T13:48:37.663 に答える
0

いくつかの癖がありますが、ドキュメントに_idは を含めることができます/。次にcompany/COMPANYID/employee/EMPLOYEEID、有効な ID です。

ドキュメントの を構築するために、次のスキームをよく使用し_idます (私は を好みます_)。

EntityName_ENTITYID

これで_id

  • _typeフィールドは必要ありません。
  • 私はすべての会社を取得し_all_docs?startkey="Company_"&endkey="Company_\fff0"ます;
  • 会社内のすべての従業員を_all_docs?startkey="Employee_COMPANYID_"&endkey="Employee_COMPANYID_\fff0";で取得します。
  • 異なるエンティティ間の ID の競合を避けます。
于 2012-04-24T10:53:23.207 に答える