2014-12-06 129 views
4

我想查詢Cloudant.com數據庫(CouchDB)中的文檔。以下兩個查詢請求罰款獨立工作:如何將多個CouchDB查詢合併爲一個請求?

{ "selector": { "some_field": "value_1" } } 

{ "selector": { "some_field": "value_2" } } 

Cloudant的文檔似乎表明我應該能這兩個查詢組合成一個單一的HTTP請求如下:

{ "selector": { "$or": [ { "some_field": "value_1" }, 
         { "some_field": "value_2" } ] } } 

但是,當我嘗試我收到以下回復:

{"error":"no_usable_index", 
"reason":"There is no operator in this selector can used with an index."} 

有人可以告訴我該怎麼做才能使其工作?

回答

1

目前似乎沒有辦法通過Cloudant Query來實現此目的。但是,您可以使用視圖查詢,而使用使用Cloudant Query創建的索引。假設該指數是在一個名爲ae97413b0892b3738572e05b2101cdd303701bb8設計文檔:

curl -X POST \ 
'https://youraccount.cloudant.com/db/_design/ae97413b0892b3738572e05b2101cdd303701bb8/_view/ae97413b0892b3738572e05b2101cdd303701bb8?reduce=false&include_docs=true' \ 
-d ' 
{ 
    "keys":[ 
    ["value_1"], 
    ["value_2"] 
    ] 
}' 

這會給你這樣的迴應:

{ 
    "total_rows": 3, 
    "offset": 1, 
    "rows": [ 
    { 
     "id": "5fcec42ba5cad4fb48a676400dc8f127", 
     "key": [ 
     "abc" 
     ], 
     "value": null, 
     "doc": { 
     "_id": "5fcec42ba5cad4fb48a676400dc8f127", 
     "_rev": "1-0042bf88a7d830e9fdb0326ae957e3bc", 
     "some_field": "value_1" 
     } 
    }, 
    { 
     "id": "955606432c9d3aaa48cab0c34dc2a9c8", 
     "key": [ 
     "ghi" 
     ], 
     "value": null, 
     "doc": { 
     "_id": "955606432c9d3aaa48cab0c34dc2a9c8", 
     "_rev": "1-68fac0c180923a2bf133132301b1c15e", 
     "some_field": "value_2" 
     } 
    } 
    ] 
} 
+1

該解決方案的偉大工程。謝謝,金! – 2014-12-09 03:50:28