0

私は複合キーを持っており、["a", "b", "c", "d", "e"]Pythonのcouchdbビューを使用してクエリを実行しようとしています. 私は通常、他のキーを除いて、一度に 1 つのキーを求めています。

たとえば、 をクエリするkey='a'には、私が見つけた唯一の機能は次のとおりです。

results=db.view(docname, startkey=['a'], endkey=['azz']).

、またはの{}いずれかで動作すると思いましたが、効果がないようです。keystartkeyendkey

実際、私は通常、次のようにしています。「"a"および、"b"または、、"a"および"c"など"e"を含むすべてのドキュメントを検索します。それは a-->e のように ,やではありません. だから, それらのために, 私は次のようなキーを持つビューを作ろうとします: , , , &を出力する必要があります。"a""b""c""x""y""z"["a", "b", "c", "d", "e", "z"]'include_docs'abcde

複合キーとクエリごとの最小限のドキュメント転送の最適な組み合わせを見つけようとしています。"a"フェッチのみ、その後"b"のみなどを理解できればうまくいくと思います。

4

1 に答える 1

0

2 つ以上の値を含むドキュメントを取得しようとしています。これは、たとえばタグである可能性があります。

次の 2 つの可能性があります。

  1. couchdb-lucene や elasticsearch などの全文検索エンジンを使用する
  2. キーの組み合わせごとにキーを発行します。タグ ["a", "b", "x"] を持つドキュメントの場合、次のように出力します。

結果を見る:

[{key: ["a"], id: 1, value: null}
{key: ["a", "b"], id: 1, value: null}
{key: ["a", "x"], id: 1, value: null}
{key: ["a", "b", "x"], id: 1, value: null}
{key: ["b"], id: 1, value: null}
{key: ["b", "x"], id: 1, value: null}
{key: ["x"], id: 1, value: null}]

include_docs を使用すると、クエリ時に対応するドキュメントを取得できます。ただし、このアプローチでは多くのディスク領域が使用されることに注意してください。このビューだけで 1 つの設計ドキュメントを作成して、ビューの結果に必要なディスク容量を確認できます。

お役に立てれば!あなたが実際の例を提供した場合、私はおそらくより良い答えを与えることができます;-)

さようなら、ベルンハルト

于 2012-09-25T08:22:32.433 に答える