2012-09-24 48 views
0

我有一個組合鍵["a", "b", "c", "d", "e"],並試圖用python couchdb查詢來查詢它。我通常是一次按下其中一個鍵,排除其他鍵。在couchdb中查詢組合鍵python

例如,要查詢key='a',我發現,工作的唯一事情是:

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

我以爲{}有兩種keystartkeyendkey工作,但他們似乎沒有任何效果。 「發現有"a""b",或有"a""c""e",等我試圖使獨立意見爲"a""b""c"等,做所有文件:

其實,我通常是後單獨的查詢,但一些查詢是基於不是 - > e的密鑰,如"x","y""z"。因此,對於那些我嘗試使用鍵看起來像:["a", "b", "c", "d", "e", "z"]。這是非常昂貴的,時間明智地帶來整個文件(與'include_docs'),我只需要輸出a,b,c,c,d & e

我正試圖找到組合鍵和每個查詢的最小文檔傳輸的最佳組合。我認爲這將工作,如果我只能找到"a",然後"b"等。

回答

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你在查詢時相應的文件。請記住,這種方法使用了大量的磁盤空間。您可以使用此視圖創建單個設計文檔,以查看視圖結果需要多少磁盤空間。

希望這會有所幫助!如果你提供了一個真實的例子,我可能會給出更好的答案;-)

你的,伯恩哈德