2014-12-06 128 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