Couchdb视图:仅匹配所有密钥

Couchdb视图:仅匹配所有密钥,couchdb,Couchdb,我使用ektrop查询视图,如下所示: query = new ViewQuery().designDocId("_design/accounts").viewName("by_account").key(search).startKey(0).endKey(99); 这将返回与键search匹配或介于开始键和结束键之间的文档。我试图在视图中获取与搜索和开始/结束键匹配的文档。我如何获得这个 我的观点是这样形成的: "by_account": { "map": "func

我使用ektrop查询视图,如下所示:

query = new ViewQuery().designDocId("_design/accounts").viewName("by_account").key(search).startKey(0).endKey(99);
这将返回与键
search
匹配或介于开始键和结束键之间的文档。我试图在视图中获取与
搜索
和开始/结束键匹配的文档。我如何获得这个

我的观点是这样形成的:

"by_account": {
           "map": "function(doc) { 
                     emit(doc.loginString,doc); 
                     emit(doc.enrolmentPercentage, doc); }"
       }
  • 避免将单据作为map/reduce中的值发出。它将是索引的一部分,因此索引将更大、更慢。改为不发出值,并使用“include_docs”查询参数获取文档
  • 不能使用key参数以及startkey和endkey(它是冲突的)
  • 对于这种类型的查询,您主要有3种解决方案:

  • 使用Mango Query和$or运算符(您希望键与“search”或0到99之间的某个值匹配)
  • 进行两个查询(一个查找“search”键,另一个查找“startkey”和“endkey”
  • 为此单个请求构建一个特殊视图。例如,如果登录字符串为“search”,则发出-1。否则,发出注册百分比。然后,使用startkey(-1)和endkey(99)进行查询。在客户端,将-1值当作搜索值来处理
  • 注意:对于解决方案3,可以用另一种方式处理,但我已尽我所能利用我所掌握的信息

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

  • 使用Mango Query和$or运算符(您希望键与“search”或0到99之间的某个值匹配)
  • 进行两个查询(一个查找“search”键,另一个查找“startkey”和“endkey”
  • 为此单个请求构建一个特殊视图。例如,如果登录字符串为“search”,则发出-1。否则,发出注册百分比。然后,使用startkey(-1)和endkey(99)进行查询。在客户端,将-1值当作搜索值来处理

  • 注意:对于解决方案3,可以用另一种方式处理,但我已尽我所能利用我所掌握的信息。

    对于解决方案3,当搜索为“搜索”时,如何选择发射-1?据我所知,无法将参数传递给
    map
    函数,因此我无法决定何时发出-1或其他值。感谢在javascript函数内调用发出函数。因此,如果(loginstring==“search”)发出(-1,val)
    “search”,则可以执行此操作
    是用户输入的。我无法像你那样将其硬编码到
    if
    中。哦,从你的问题描述中我不清楚。也许,Mango是你的解决方案。如果你绝对想使用map和reduce,你将不得不进行多个查询或内存过滤。对于3,当搜索为“search”时,你如何选择发出-1?据我所知,无法将参数传递给
    map
    函数,因此我无法决定何时发出-1或其他值。感谢在javascript函数内调用发出函数。因此,如果(loginstring==“search”)发出(-1,val)
    “search”,则可以执行此操作
    是用户输入的。我无法像您那样将其硬编码到
    if
    中。哦,我不清楚您的问题描述。也许,Mango是您的解决方案。如果您绝对希望使用map和reduce进行此操作,您将不得不执行多个查询或内存过滤。