等优先查看整理CouchDB?

时间:2012-07-02 23:30:38

标签: javascript couchdb collation couchapp couchbase

根据 CouchDB 查看整理文档( http://wiki.apache.org/couchdb/View_collation),排序订单非常重要。我想知道是否有办法禁用这个属性,以便整理顺序无关紧要?我希望能够“搜索”我的视图,以便发出的文档满足该字段的所有键范围。

以下是有关视图整理的更多内容供您参考:CouchDB sorting and filtering in the same view

同样,如果可以设置CouchDB使得顺序与视图整理无关,那么用于 GET 请求的以下参数应该只发出 doc.phone_number ==的文档“ZZZZZZZ”,而现在它会发出落在前3个键范围内的文档,并完全忽略最后一个键。发生这种情况是因为最后一个密钥在当前整理方案中的优先级最低。

startkey :[null,null,null,“ZZZZZZZ”],

endkey :[“\ ufff0”,“\ ufff0”,“\ ufff0”,“ZZZZZZZZ”],

样本映射功能

 var map = function(doc) {


                    /*
                    //Keys emitted 
                    1. name
                    2. address
                    3. age
                    3. phone_number
                    */
                    emit([doc.name,doc.address,doc.num_age,doc.phone_number],doc._id)
                }

这是可能的,还是我必须创建多个视图才能执行此操作?使用多个视图似乎非常无效。

我已经读过 CouchDB-Lucene :( How to realize complex search filters in couchdb? Should I avoid temporary views?)对于复杂搜索会有所帮助,但在这种情况下似乎并不适用。

1 个答案:

答案 0 :(得分:0)

使用多个视图并不是低效的,恰恰相反:拥有四个视图(名称,地址,年龄和电话号码)将不会比单个视图发出所有内容使用更多的时间或内存。它是在CouchDB中执行“WHERE field = value”查询的简单,直接,有效的方法。

如果您实际上正在寻找“WHERE field = value AND field2 = value2”查询,那么CouchDB将无法帮助您,您将需要使用Lucene。

您需要了解排序规则仅描述了订购键的方式。即使您可以指定任何任意排序规则,您仍然需要处理CouchDB需要您定义键的顺序这一事实,并且只允许您查询连续的键范围。这与多维范围查询不兼容。