Couchdb 如何不确定地查询具有复杂嵌套键的设计视图

Couchdb 如何不确定地查询具有复杂嵌套键的设计视图,couchdb,Couchdb,我正在访问一个CouchDB视图,它发出的文档具有两个四个整数数组的键,如[[int,int,int,int],[int,int,int]。在具体示例中,这些日期对应于文档的开始日期和结束日期: [[2017, 5, 5, 10], [2017, 7, 2, 11]] Y m d H Y m d H 我能得到与某个时期相匹配的文件 问题:如何忽略“小时”字段H? 如果边界部分未知怎么办?如何在给定的时间段内获取所有文档,如2017-05-05到2017-07

我正在访问一个CouchDB视图,它发出的文档具有两个四个整数数组的键,如
[[int,int,int,int],[int,int,int]
。在具体示例中,这些日期对应于文档的开始日期和结束日期:

[[2017, 5, 5, 10], [2017, 7, 2, 11]]
 Y      m  d  H     Y     m  d  H
我能得到与某个时期相匹配的文件 问题:如何忽略“小时”字段H? 如果边界部分未知怎么办?如何在给定的时间段内获取所有文档,如2017-05-05到2017-07-02期间的
?换句话说,如何忽略每个边界的最后一列

我尝试使用
startKey
endKey

request="localhorst/dbname/_design/a/_view/period"
request+="?startKey=\[\[2017,5,5\],\[2017,7,2\]\]"
request+="&endKey=\[\[2017,5,5,\{\}\],\[2017,7,2,\{\}\]\]"
curl -sX GET $request
这不起作用,因为它获取的文档具有正确的下限,但上限是错误的,例如:

[[2017,4,5,10],[2017,7,2,12]] <- excluded,  OK
[[2017,5,5,10],[2017,7,2,12]] <- contained, OK
[[2017,5,5,11],[2017,7,2,12]] <- contained, OK
[[2017,5,5,10],[2017,8,2,12]] <- contained, ERROR

[[2017,4,5,10],[2017,7,2,12]这是不可能的。如果使用复合键,则可以通过仅将项目拖放到键数组的右侧,而不是在键数组内部拖放项目,来执行与
startkey
endkey
的部分匹配

如果不知道文档的结构,很难提供比一般建议更多的建议。我希望发出一个时间戳向量,并使用startkey和endkey来查找范围,而不是尝试使用范围作为关键点。但是,这种方法可能不适合您的模型


否则,如上所述,使用芒果可能是你的最佳选择。

这是不可能的。如果使用复合键,则可以通过仅将项目拖放到键数组的右侧,而不是在键数组内部拖放项目,来执行与
startkey
endkey
的部分匹配

如果不知道文档的结构,很难提供比一般建议更多的建议。我希望发出一个时间戳向量,并使用startkey和endkey来查找范围,而不是尝试使用范围作为关键点。但是,这种方法可能不适合您的模型


否则,如上所述,使用Mango可能是您的最佳选择。

您可以使用empty作为开始键,使用empty object{}作为最后一个键

因此2017-05-05至2017-07-02将是

[2017,05,05]
[2017,07,02,{},{},{},{}]


您可以参考这个答案:

您可以使用empty作为开始键,使用empty object{}作为最后一个

因此2017-05-05至2017-07-02将是

[2017,05,05]
[2017,07,02,{},{},{},{}]


您可以参考以下答案:

我的第一个建议是尝试芒果。提示:为什么不使用RFC3339日期而不是自定义格式?它是可排序的,许多程序/库都是本地理解它的。谢谢你提出的有趣的建议,我会把它们记在心里,以备将来的发展。在目前的情况下,我无法决定数据结构的格式。我的第一个建议是尝试Mango。只是一个提示:为什么不使用RFC3339日期而不是自定义格式?它是可排序的,许多程序/库都是本地理解它的。谢谢你提出的有趣的建议,我会把它们记在心里,以备将来的发展。在目前的情况下,我无法决定数据结构的格式。谢谢你的澄清,我猜了一些类似的东西,但希望有一些秘密魔法我还没有发现:)谢谢你的澄清,我猜了一些类似的东西,但希望有一些秘密魔法我还没有发现:)
[[2017,4,5,10],[2017,7,2,12]] <- excluded,  OK
[[2017,5,5,10],[2017,7,2,12]] <- contained, OK
[[2017,5,5,11],[2017,7,2,12]] <- contained, OK
[[2017,5,5,10],[2017,8,2,12]] <- contained, ERROR