具有多个键值的CouchDB视图查询

eph*_*ere 6 couchdb

我目前正在尝试创建一个视图和查询以适合此SQL查询:

SELECT * FROM articles
WHERE articles.location="NY" OR articles.location="CA"
ORDER BY articles.release_date DESC
Run Code Online (Sandbox Code Playgroud)

我试图用复杂的密钥创建一个视图:

function(doc) { 
  if(doc.type == "Article") { 
    emit([doc.location, doc.release_date], doc) 
  }
}
Run Code Online (Sandbox Code Playgroud)

然后使用startkeyendkey检索一个位置并在发布日期对结果进行排序.

.../_view/articles?startkey=["NY", {}]&endkey=["NY"]&limit=5&descending=true
Run Code Online (Sandbox Code Playgroud)

这很好用.

但是,如何将多个启动键和结束键发送到我的视图以模仿

WHERE articles.location="NY" OR articles.location="CA"

Jas*_*ith 7

我的主要克星,多米尼克,是对的.

此外,永远不可能按标准A查询,然后按CouchDB中的标准B排序.为了解决这种不便,CouchDB保证了可扩展,可靠,对数的查询时间.你有一个选择.

  • 将视图输出存储在自己的数据库中,并创建一个新视图以按条件B排序
  • 或者,然后对行进行排序,也可以是
    • 收到行后,对客户端进行排序
    • _list函数中对服务器端进行排序.这很棒,但请记住它不是最终可扩展的.如果你有数百万行,该_list函数可能会崩溃.

  • 势均力敌的对手??:o (5认同)

Dom*_*nes 5

简而言之,您目前无法使用多个startkey/endkey组合.

您要么必须进行2次单独查询,要么始终可以添加lucene搜索引擎以获得更强大的搜索功能.

可以使用多个key查询中的参数.有关多文档提取的信息,请参阅Couchbase CouchDB文档.