Couchdb Map函数获取两个日期之间的数据
Couchdb Map function to get the data in between two dates
我在我的couchdb中有一组文档,这里我提到了一个示例文档:
{
"_id": "26",
"_rev": "1-53ac67e9ec4b4ce8ffa9cd609e107aaf",
"customer_name": "Vadilal",
"type": "trip",
"duration": "10 hours 27 mins",
"end_time": "Jan 1, 2014 10:11:00 PM",
"start_time": "Jan 11, 2014 8:46:00 AM",
}
如果我从URL传递timestamp(key)
,如果它在start_time
和end_time
之间,那么我想获得文档。
的例子:
假设url是这样的
.../trip/_design/trip/_view/trip?key="Jan 10, 2014 8:46:00 AM"
在这里,我将时间戳传递为Jan 10, 2014 8:46:00 AM
,因此它位于上述文档的start_time
和end_time
之间,在这种情况下,我需要获取剩余的信息。
请帮忙解决这个问题,这将对我有很大的帮助。
我写的函数如下:
function(doc){
if(doc.type=="trip"){
var startTime=new Date(doc.start_time);
var endTime=new Date(doc.end_time);
emit([startTime.getTime(),endTime.getTime()], doc);
}
和调用URL如下:
../trip/_design/trip/_view/trip?startkey=[1390086890000]&endkey=[1390086890000,{}]
根据我的要求,上面的是正确的吗?
遗憾的是这是不可能的。你的要求有两个问题。
视图按键
排列您可以编写这样的视图,分别通过开始键或结束键对文档进行索引。
function(doc){
emit(doc.start_time, doc_id); // amend with end key to index by end key.
}
您可以在查询中使用三个参数:
- 键-匹配一个精确的键
- startkey -匹配大于或等于开始键 的所有文档
- endkey -匹配大于或等于结束键 的所有文档
排序问题
根据类型,您的索引键将按字母顺序或整数排序。如果视图trip
使用了这样的开始键:
.../trip/_design/trip/_view/trip?start_key="Jan 10, 2014 8:46:00 AM"
您可以返回大于或等于字符串"Jan 10, 2014…"的所有值,这对于"Jan 11, 2014"或"Jan 31, 2014"将为真,但是对于"July 22, 2011"将有假阳性或对于"Feb 01, 2014"将有假阴性,如F 如果您有更多关于开始时间和结束时间之间最大差异的详细信息,您可以使用它来进一步减少每个集合中的文档。下面的示例将返回在 您可以对by_end_date视图应用类似的逻辑。 function(doc){
var start_time = some_conversion_function(doc.start_time);
var end_time = some_conversion_function(doc.end_time);
emit([start_time, end_time], doc_id);
}
date
之前不迟于X天,在date
之前不迟于X天,在date
之后不迟于X天结束的文档。 ..._view/by_start_date?startkey=[date-X,]&endkey=[date, date+X]
- 如何在javascript中获取两个日期之间的周六和周日的日期
- 如何用moment.js列出两个日期之间的所有月份
- 两个日期时间选择器
- 如何在JavaScript中比较两个日期
- moment.js在两个时区格式的日期之间存在差异
- Javascript-如何使用bootstrap日期时间选择器自动计算两个时间输入之间的差异
- Javascript两个日期选择器冲突
- 如何从日期范围选择器中获取两个日期
- 用时间戳获取两个不同日期之间的时间差
- JavaScript函数,用于计算两个日期之间的年、月和天数
- 使用javascript将两个输入的日期添加在一起
- 再次使用JavaScript计算两个日期之间的天数
- Mongoose查询在两个日期时间之间提取数据
- 在Javascript中计算两个日期之间的工作日,节假日除外
- 在Jquery或Javascript中获取两个范围或日期之间的通信周数
- 两个日期之间的差异
- JavaScript-计算两个日期之间的天数(包括结束日期)
- 在 JavaScript 中单击函数时两个日期类型输入之间的差异的代码
- 如何将日期和时间拆分为两个元素
- 当前日期两个时间之间的时间