Couchdb视图:仅匹配所有键

时间:2017-06-14 19:29:05

标签: couchdb

我正在使用ektrop查询视图:

query = new ViewQuery().designDocId("_design/accounts").viewName("by_account").key(search).startKey(0).endKey(99);

这将返回与键search匹配的文档或开始和结束键之间的文档。我正在尝试在视图中获取与search和开始/结束键匹配的文档。我如何获得这个?

我的观点是这样形成的:

"by_account": {
           "map": "function(doc) { 
                     emit(doc.loginString,doc); 
                     emit(doc.enrolmentPercentage, doc); }"
       }

1 个答案:

答案 0 :(得分:2)

  1. 避免将doc作为map / reduce中的值发出。它将成为索引的一部分,因此索引将更大更慢。不要发出任何值,并使用“include_docs”查询参数来获取文档。
  2. 你不能使用key参数以及startkey和endkey(它是冲突的)
  3. 对于此类查询,您主要有3个解决方案:

    1. 使用Mango Query和$或运算符(您希望密钥匹配“搜索”或0到99之间的内容)
    2. 进行两次查询(一次查找“搜索”键,另一次查找“startkey”和“endkey”
    3. 为此单个请求构建特殊视图。例如,如果登录字符串是“search”,则发出-1。否则,发出注册百分比。然后,查询startkey(-1)和endkey(99)。在客户端,处理-1值,就好像它们是搜索一样。
    4. 注意:至于解决方案3,它可以通过其他方式处理,但我已经尽我所能处理了我的信息。