我目前正在尝试创建一个视图和查询以适应此SQL查询:
SELECT * FROM articles
WHERE articles.location="NY" OR articles.location="CA"
ORDER BY articles.release_date DESC
我尝试使用复杂的密钥创建视图:
function(doc) {
if(doc.type == "Article") {
emit([doc.location, doc.release_date], doc)
}
}
然后使用 startkey 和 endkey 检索一个位置并在发布日期对结果进行排序。
.../_view/articles?startkey=["NY", {}]&endkey=["NY"]&limit=5&descending=true
这很好用。
但是,如何将多个启动键和结束键发送到我的视图以模仿
WHERE articles.location="NY" OR articles.location="CA"
?
答案 0 :(得分:7)
我的主要克星,多米尼克,是对的。
此外,按标准A查询永远不可能,然后按CouchDB中的条件B排序。为了解决这种不便,CouchDB保证了可扩展,可靠,对数的查询时间。你有一个选择。
_list
函数中对服务器端进行排序。这很棒,但请记住它不是最终可扩展的。如果您有数百万行,_list
函数可能会崩溃。答案 1 :(得分:5)
简短的回答是,您目前不能使用多个startkey / endkey组合。
您要么必须进行2次单独查询,要么始终可以添加lucene搜索引擎以获得更强大的搜索功能。
可以在查询中使用多个key
参数。请参阅Couchbase CouchDB documentation on multi-document fetching。