mwj*_*son 4 couchdb mongodb cassandra nosql redis
给定一个商店,它是(近似)形式的JSON文档集合:
{
PeriodStart: 18/04/2011 17:10:49
PeriodEnd: 18/04/2011 17:15:54
Count: 12902
Max: 23041 Min: 0
Mean: 102.86 StdDev: 560.97
},
{
PeriodStart: 18/04/2011 17:15:49
PeriodEnd: 18/04/2011 17:20:54
Count: 10000
Max: 23041 Min: 0
Mean: 102.86 StdDev: 560.97
}... etc
Run Code Online (Sandbox Code Playgroud)
如果我想查询给定日期范围的集合(比如说过去24小时内的所有文档),这会给我最简单的查询操作吗?
进一步详细说明要求:
我可能没有准确地查询您的查询要求,因为您没有指定.但是,如果您需要查找在特定范围内开始或结束的任何文档,则可以应用下面所写的大部分内容.如果这不是你想要的,那么我可以更多地帮助我们.:)
如果使用CouchDB,则可以通过将日期的各个部分拆分为数组来创建索引.([year, month, day, hour, minute, second, ...])
您的地图功能可能类似于:
function (doc) {
var date = new Date(doc.PeriodStart);
emit([ date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes() ] , null]);
}
Run Code Online (Sandbox Code Playgroud)
要执行任何类型的范围查询,您需要将开始和结束时间转换为相同的数组结构.从那里,您的视图查询将具有被称为startkey和的参数endkey.他们将分别接收开始和结束的数组参数.
因此,要查找过去24小时内开始的文档,除了视图本身的完整URI之外,还会发送这样的查询字符串:
// start: Apr 17, 2011 12:30pm ("24 hours ago")
// end: Apr 18, 2011 12:30pm ("today")
startkey=[2011,04,17,12,30]&endkey=[2011,04,18,12,30]
Run Code Online (Sandbox Code Playgroud)
或者,如果您想要今年的所有内容:
startkey=[2011]&endkey=[2011,{}]
Run Code Online (Sandbox Code Playgroud)
请注意{}.用作结束[2011,{}]键[2012]时:与整理视图时相同.(任何格式都可以)
数组的额外组件将被忽略,但是您添加到阵列的进一步特异性,您的范围可以更具体.如果添加group_level参数,添加reduce函数在这里可能非常强大,但这超出了您的问题的范围.
| 归档时间: |
|
| 查看次数: |
5357 次 |
| 最近记录: |