gpt4 book ai didi

Couchbase 多个 key

转载 作者:行者123 更新时间:2023-12-03 06:49:17 24 4
gpt4 key购买 nike

我想问一个简单的问题。我有以下数据。

我想搜索 ID > 2 但 < 8 且价格 > 30 的所有行

我使用过各种版本:startkey=["2", null]甚至类似 startkey=["2", "30"]只是为了测试。

它似乎只在第一行运行这两个条件。所以如果我这样做:startkey=["2", "30"]然后我回来:

{"id":"3","key":["3","30"],"value":null},
{"id":"4","key":["4","30"],"value":null},
{"id":"5","key":["5","20"],"value":null},
{"id":"6","key":["6","60"],"value":null},
{"id":"8","key":["8","60"],"value":null}

为什么第 5 行在那里?

我开始认为我需要在代码(.net)中处理这个问题并以某种方式进行多次调用......我似乎找不到任何有效的东西......

注意:我尝试用 for (i = 0; i < doc.ID.length; i++) 做一个循环然后使用 doc.ID[i]但它永远不会返回任何东西......

目前我只有

function (doc, meta) {
emit([doc.ID, doc.Price ],null);
}

本质上,我想在用户拥有 5 个输入键的情况下进行搜索。那么我是否需要进行 5 次调用,然后继续从上一个输出中获取数据作为下一个输出的来源???

我看过的其他引用资料包括:手册

提前致谢,

最诚挚的问候罗宾

最佳答案

这是一个常见的误解,对于复合数组索引键,它仍然被视为字符串,因此索引键 [2,10] 实际上是“[2,10]”,而索引键 [5,20 ],实际上是“[5,20]”。

因此 startkey=["2", "30"] 显示 {"id":"5","key":["5","20 "],"value":null}, 行是因为作为字符串它是 > startkey。

同样,查询 startkey=[2,10]&endkey=[5,10] 返回

{"total_rows":7,"rows":[
{"id":"2","key":[2,20],"value":null},
{"id":"3","key":[3,30],"value":null},
{"id":"4","key":[4,30],"value":null}
]
}

因为startkey="[2,10]" <"[2,20]" && "[4,30]" <“[5,10]”=endkey,但“[5,20]”不在该字符串范围内。

使用 startkey 和 endkey 进行范围查询

startkey => endkey 是使用 strcmp() 的 Range 查询,组和组级别基于字符串,其中逗号分隔字符串标记。

一个很好的引用链接(因为 Couchbase View 的工作方式很像 Apache CouchDB View (受其启发)) http://wiki.apache.org/couchdb/View_collation#Collation_Specification

空间 View /查询

为了实现您想要的结果,您还可以编写一个空间 View 来进行多维查询(仅限数字)。虽然您最初可能没有想到这一点

function (doc, meta) {
emit({
type: "Point",
coordinates: [doc.ID, doc.Price]
}, meta.id);
}

查询将是边界框查询:

&bbox=2,0,8,30

{"total_rows":0,"rows":[
{"id":"2","bbox":[2,20,2,20],"geometry":{"type":"Point","coordinates":[2,20]},"value":"2"},
{"id":"3","bbox":[3,30,3,30],"geometry":{"type":"Point","coordinates":[3,30]},"value":"3"},
{"id":"4","bbox":[4,30,4,30],"geometry":{"type":"Point","coordinates":[4,30]},"value":"4"},
{"id":"5","bbox":[5,20,5,20],"geometry":{"type":"Point","coordinates":[5,20]},"value":"5"}
]
}

另一个查询:

&bbox=2,30,8,30

{"total_rows":0,"rows":[
{"id":"3","bbox":[3,30,3,30],"geometry":{"type":"Point","coordinates":[3,30]},"value":"3"},
{"id":"4","bbox":[4,30,4,30],"geometry":{"type":"Point","coordinates":[4,30]},"value":"4"}
]
}

关于Couchbase 多个 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13950689/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com