Couchdb视图不适用于多个过滤器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Couchdb视图不适用于多个过滤器相关的知识,希望对你有一定的参考价值。
Couchdb视图文档不适用于多个过滤器。
这些是我的示例文档
{
"_id": "test_1234",
"_rev": "1-ff074e2f5a6e1c4e036703524fcebca3",
"data": {
"userid": 1,
"year": 1989,
"name": "Aro",
"type": "test"
}
}
{
"_id": "test_1235",
"_rev": "1-bb86f782333c1510391f3b54d9d3a6ad",
"data": {
"userid": 2,
"year": 1990,
"name": "Babu",
"type": "test"
}
}
{
"_id": "test_1236",
"_rev": "1-02f1b6b9dcbadcad88160d996a1c4361",
"data": {
"userid": 3,
"year": 1989,
"name": "Siva",
"type": "test"
}
}
这是我的查看文档
{
"_id": "_design/testview",
"_rev": "4-53e5fcd4dedc4e02e26844ceea70a018",
"views": {
"testview": {
"map": "function (doc) {if(doc.data.type === \"test\") emit([doc.data.userid,doc.data.year,doc.data.name], null);}"
}
},
"language": "javascript"
}
所以我的查看结果如下所示
{"total_rows":3,"offset":0,"rows":[
{"id":"test_1234","key":[1,1989,"Aro"],"value":null},
{"id":"test_1235","key":[2,1990,"Babu"],"value":null},
{"id":"test_1236","key":[3,1989,"Siva"],"value":null}
]}
lhbwfjewbfj wfwfwejf bwefw whj ffbjhkwv hfv wevwvweh vhvf
我需要为以下参数过滤文档
userid:1到3年:1989name:Aro
所以我有如下所示的创建查询
viewtest / _design / testview / _view / testview?startkey = [1,1989,“ Aro”]&endkey = [3,1989,“ Aro \ ufff0”]
我对此的预期输出
{"total_rows":3,"offset":0,"rows":[
{"id":"test_1234","key":[1,1989,"Aro"],"value":null}
]}
但是实际输出是
{"total_rows":3,"offset":0,"rows":[
{"id":"test_1234","key":[1,1989,"Aro"],"value":null},
{"id":"test_1235","key":[2,1990,"Babu"],"value":null}
]}
为什么?我的代码有什么问题?
答案
键遵循简单的ordered collation,因此startkey=[1,...]
和endkey=[3,...]
匹配所有的键,例如[2,...]。由于2大于1且小于3,因此不需要比较次要元素。
如果要在多个元素上过滤结果,则可能要使用mango queries。
以上是关于Couchdb视图不适用于多个过滤器的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 javascript 在 couchdb 中使用多个组合键进行查询,而无需为每个组合编写单独的视图?