2017-09-13 71 views
0

我想使用MongoDB的樣_find查詢CouchDB中2.X:
http://docs.couchdb.org/en/2.1.0/api/database/find.htmlCouchDB的_find查詢與use_index不工作

具有以下,我得到我應該使用索引警告。

curl -k -X POST "$COUCHDB_HOST/vacation-at-ibm/_find" \ 
>  -H "Content-Type: application/json" \ 
>  -w "\nhttp_code=%{http_code}\n" \ 
>  --data-binary ' 
> { 
>  "selector": { 
>   "ownerId": {"$eq": "1A4061897"} 
>  } 
> } 
> ' 

{"warning":"no matching index found, create an index to optimize query time", 

"docs":[ 
{...} 
http_code=200 

但是,當我加入use_index選項,我得到一個錯誤,它無法找到我的索引:

curl -k -X POST "$COUCHDB_HOST/vacation-at-ibm/_find" \ 
>  -H "Content-Type: application/json" \ 
>  -w "\nhttp_code=%{http_code}\n" \ 
>  --data-binary ' 
> { 
>  "use_index": [ 
>   "_design/EventDocument", 
>   "events-by-ownerId" 
>  ], 
>  "selector": { 
>   "ownerId": {"$eq": "1A4061897"} 
>  } 
> } 
> ' 
{"error":"unknown_error","reason":"Unknown Error: mango_idx :: {no_usable_index,no_index_matching_name}"} 

我做,我應該指定設計文件關鍵假設和視圖名稱。但是這是一個猜測,因爲我發現use_index選項絕對沒有有用的文檔。沒有實際嘗試使用它的例子。這是我的設計文檔:

{ 
    "_id": "_design/EventDocument", 
    "_rev": "1-115570169dec7d32845c3b7c6e6978fe", 
    "language": "javascript", 
    "views": { 
    "events-by-ownerId": { 
     "map": "function(doc) { if (doc.docType == 'event' && doc.ownerId) { var firstDate = null; if (doc.date) { firstDate = doc.date; } emit([doc.ownerId, firstDate], doc); }}" 
    } 
    } 
} 

有沒有人知道如何使用此選項?我是否在設計文檔和索引中使用了錯誤的值?

回答

1

所以當他們說,「創建索引」,他們指的是/db/_index端點。

您需要通過此過程創建索引。您可以指定要存儲索引的位置,否則,CouchDB將創建設計文檔並將索引存儲在那裏。