Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/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来存储有关事件的数据。每个事件都有开始日期/时间和结束日期/时间。我现在想创建一个视图,它允许我获取在特定日期/时间发生的所有事件的列表。但是这些活动没有一个单一的日期,它们可以在几天内进行 现在我不知道如何在我的视图函数中反映这一点。不幸的是,我需要分钟级别的粒度,因此为每分钟发出一个密钥可能不是有效的解决方案。那我该怎么做呢 提前谢谢 好吧,这里有一个解决方案!我刚和CouchDB的Jan(Lehnardt)打过乒乓球,他告诉我我可以在一张地图中多次发射。有些事我到现在还

我使用CouchDB来存储有关事件的数据。每个事件都有开始日期/时间和结束日期/时间。我现在想创建一个视图,它允许我获取在特定日期/时间发生的所有事件的列表。但是这些活动没有一个单一的日期,它们可以在几天内进行

现在我不知道如何在我的视图函数中反映这一点。不幸的是,我需要分钟级别的粒度,因此为每分钟发出一个密钥可能不是有效的解决方案。那我该怎么做呢


提前谢谢

好吧,这里有一个解决方案!我刚和CouchDB的Jan(Lehnardt)打过乒乓球,他告诉我我可以在一张地图中多次发射。有些事我到现在还不知道

为了方便我自己,我假设您的结束时间和开始时间已经是时间戳值了。如果没有,您需要在地图中转换它们,或者通常切换到它们

我还要假设一个事件在一整分钟内开始(例如,
16:51:00
),而不是在
16:51:23
。在结束日期也一样

示例文件:

{
    "_id"   : "super-random-id",
    "name"  : "event 1",
    "start" : "TIMESTAMP",
    "end"   : "TIMESTAMP"
}
这是地图:

function (doc) {
    if (doc.start == undefined || doc.end == undefined) {
        return;
    }
    var current = doc.start;
    while (current <= doc.end) {
        emit(current, doc.id);
        current = current + 60; // increment by 1 minute
    }
}
功能(doc){
如果(doc.start==未定义| | doc.end==未定义){
返回;
}
var current=doc.start;

虽然(当前我最终找到了一个使用GeoCoach的好解决方案:

很难,但我不认为范围查询是CouchDB的强项。谢谢你的回答,但正如我在问题中所写的,“每分钟发出一个键可能不是一个有效的解决方案”。这是因为我手头上有很长的时间范围(即多天).另一方面,我仍然需要一个精细的粒度。这只能通过每个文档发出数千个键来实现,据我所知,这并不能很好地扩展。但再次感谢你的想法。好吧,视图只计算一次,然后再读取。我认为这不应该是一个问题,但我明白你的意思。这是正确的答案,但不幸的是,链接已经失效。文章:GeoCoach“允许使用边界框进行空间搜索…GeoCoach的空间索引需要GeoJSON条目(也不绑定到任何不同的格式,如WGS84),因此我们将时间段作为带有边界框的位置发出。纵向值被忽略并设置为0,而纬度值表示编码为时间戳的时间起点和终点。因此,我们……有效地查询给定时间段内的所有条目。”