Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CouchDB密钥始终匹配_Couchdb - Fatal编程技术网

CouchDB密钥始终匹配

CouchDB密钥始终匹配,couchdb,Couchdb,我希望以这样一种方式查询我的CouchDB:文档中的某些字段可以是匹配任何键请求的通配符 例如: 功能(doc){ 发出(单据部分字段,单据); } ?key=100将匹配某些字段为100的文档和某些字段值如* 这可能吗?有没有黑客可以这么做?来自Couchdb: CouchDB实际上存储 [key,docid]配对作为 B树。这意味着: 您总是知道键和值来自哪个文档(它在视图结果中显示为“id”字段) 查看键相等的行,按增加docid排序 因此,我认为作为键的一部分使用通配符字段是不可能

我希望以这样一种方式查询我的CouchDB:文档中的某些字段可以是匹配任何键请求的通配符

例如:

功能(doc){
发出(单据部分字段,单据);
}
?key=100
将匹配某些字段为100的文档和某些字段值如*

这可能吗?有没有黑客可以这么做?

来自Couchdb:

CouchDB实际上存储 [key,docid]配对作为 B树。这意味着:

  • 您总是知道键和值来自哪个文档(它在视图结果中显示为“id”字段)
  • 查看键相等的行,按增加docid排序
因此,我认为作为键的一部分使用通配符字段是不可能的,因为它们是经过排序的。假设它们是可能的。然后,如果尝试从视图中查询键范围,则带有通配符的行将返回任何键范围。这意味着它们无处不在。但这是不可能的,因为它们是分类的。也就是说,在一对其他行之间放置一个带有通配符的行,其中一行具有较大的键,另一行具有较小的键。

根据,您可以执行以下操作:

?startkey="key"&endkey="key\ufff0"

匹配键*

是的,我想如果有什么方法可以做一个OR,尽管那会奏效。比如100或*。我可能必须使用couchdb-lucene。使用两个请求可以作为解决方法:第一个请求密钥(?key=100),第二个请求通配符行。如果课程为通配符,则需要有相邻的键。说这一切都是可能的:)@Jan如果我正确理解了这个问题,那么我的答案-1是多余的。然而,我应该提到这种基于排序的技巧。如果我搞错了,请参阅我答案的注释。不确定如何删除-1。如果我正确理解了问题,作者不希望查询带有通配符。他需要视图的行在其键中包含通配符。OT:谢谢你在couchdb上的工作,等等:)好的,我需要任何传入的密钥来匹配存储在数据库中的某个通配符密钥。我知道这听起来很奇怪。。。但是包管理器可以要求为系统属性X、Y和Z编译所有包,但是有些包是通用的,可能在X和Y上匹配,但没有Z,但是它们的通用字段标记为*。啊,对不起,我当时误解了这个问题。如果您的POST正文如下所示,您可以使用对视图的POST请求来获取多个键的逻辑OR:
{“keys”:[“key1”、“key2”,…]}
请参见Hmm,因此如果我能够以某种方式将其与开始键和结束键结合起来,这实际上是可行的。因为我还需要在键中使用通配符但我猜你,简,已经知道了:)