Couchdb 如何不确定地查询具有复杂嵌套键的设计视图
我正在访问一个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
[[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