CouchDB是否支持多范围查询?

5 couchdb range conditional-statements

如何在CouchDB中实现多范围查询?对于单一范围条件,startkey和endkey组合工作正常,但同样的事情不适用于多范围条件.

我的视图功能是这样的:

"function(doc){
       if ((doc['couchrest-type'] == 'Item') 
    && doc['loan_name']&& doc['loan_period']&&    
                      doc['loan_amount']) 
     {  emit([doc['template_id'],
          doc['loan_name'],doc['loan_period'],
           doc['loan_amount']],null);}}"
Run Code Online (Sandbox Code Playgroud)

我需要获得loan_period> 5和 loan_amount> 30000 的整个文档.我的startkey和endkey参数是这样的:

params = {:startkey =>["7446567e45dc5155353736cb3d6041c0",nil,5,30000],
  :endkey=>["7446567e45dc5155353736cb3d6041c0",{},{},{}],:include_docs => true}  
Run Code Online (Sandbox Code Playgroud)

在这里,我没有得到理想的结果.我认为我的startkey和endkey params是错误的.谁能帮我?

tim*_*mbo 0

你的发出声明对我来说看起来有点奇怪。emit 的目的是生成一个键(即索引),然后生成您感兴趣的文档值。

例如:

emit( doc.index, [doc.name, doc.address, ....] );
Run Code Online (Sandbox Code Playgroud)

您正在为索引生成一个数组,但没有为视图生成数据。

此外,Couchdb 不提供视图的交集,因为它不太适合映射/归约范例。因此,您的需求归结为尝试解决以下问题:

我可以生成一个唯一索引,然后可以从中提取特定范围吗?(使用开始键和结束键)