0

我有一个复合键["a", "b", "c", "d", "e"],正在尝试使用 python couchdb 视图查询它。我通常一次只使用一个键,不包括其他键。

例如,要查询key='a',我发现唯一有效的是:

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

我认为{}与或一起使用key,但它们似乎没有效果。startkeyendkey

实际上,我通常追求的是:“查找所有具有"a"and "b",或具有"a", "c"and"e"等的文档。我尝试为"a", "b","c"等创建单独的视图并进行单独的查询,但有些查询是基于键不是 a-->e、like"x"或。"y"因此,对于那些,"z"我尝试使用如下所示的键创建视图:永远需要输出, , , & 。["a", "b", "c", "d", "e", "z"]'include_docs'abcde

我试图找到复合键的最佳组合和每个查询的最小文档传输。我认为如果我能弄清楚"a"只取,那么它会起作用"b",等等。

4

1 回答 1

0

我希望我对您的理解正确:您正在尝试获取包含两个或多个值的文档。例如,这可能是标签。

你有两种可能:

  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,您可以在查询时获得相应的文档。请记住,这种方法会占用大量磁盘空间。您可以仅使用此视图创建一个设计文档,以查看视图结果需要多少磁盘空间。

希望这可以帮助!如果您提供了一个真实的示例,我可能会给出更好的答案;-)

你的,伯恩哈德

于 2012-09-25T08:22:32.433 回答