如何查询pouchDB中的复杂密钥?

时间:2017-01-22 11:38:51

标签: couchdb pouchdb nosql

如果我要提出请求,请执行以下操作:

  

https://myserver.com/sometestdb/_design/sortJob/_view/index?limit=100&reduce=false& startkey = [" job_price"]& endkey = [" job_price",{}]

对于地图查询,例如:

function(doc) {
    if (doc.data.type === "job") {
        emit(["job_ref", doc.data.ref], null);
        emit(["job_price", doc.data.price], null);
    }
}

如何使用pouchDb query复制查询?我已经尝试了一些关于开始和结束键的事情,但没有运气:

{
  include_docs: true,
  startkey: 'job_price',
  endkey: 'job_price,{}'
}

{
  include_docs: true,
  startkey: 'job_price',
  endkey: 'job_price\uffff'
}

这两个都返回0结果,而我使用的链接产生预期结果。

注意:我可以确认我的pouchDB中存在数据,因为我使用pouch-find插件查询了该数据,但我正在尝试各种技术来查看哪个更快。

编辑:根据文档中的complex keys section,我应该可以执行以下操作:

{
  include_docs: true,
  startkey: '[\'job_price\']',
  endkey: '[\'job_price\',{}]'
}

但结果是:

  

没有行可以匹配您的键范围,反转您的start_key和end_key   或者设置{descending:true}

但我应该能够得到这样的结果并且不要descending: true

1 个答案:

答案 0 :(得分:4)

好的,所以我阅读了关闭的文档。

构建开始/结束键时,需要传递数组,而不是将数组作为字符串传递(我认为pouchDB然后是eval' d。

这是有效的查询:

{
  include_docs: true,
  startkey: ['job_price'],
  endkey: ['job_price', {}]
}

发布此答案而不是删除问题,因为它可能有助于其他人。