我需要创建一些复杂的查询,请你帮我写一下。
在我的数据库中,我有文档列表,例如:
{
"_id": "26",
"_rev": "1-53ac67e9ec4b4ce8ffa9cd609e107aaf",
"customer_name": "Praneeth",
"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",
}
现在,我想创建一个可以读取当前timestamp
的视图,并从网址中输入以获取end_time
小于或等于当前timestamp
且类型为{的文档{1}}。这里的类型可能不仅仅是"trip"
,基于从我应该获取文档的URL传递的trip
。
假设我在SQL中编写,查询它将是这样的:
type
我的观点如下所示如何从URL调用此视图以获得所需的输出
SELECT * FROM table_name WHERE end_time>="current time passed from the URL as key" and type='type passed from the url as key'
低于一个是正确的?
function(doc){
var startTime=new Date(doc.start_time);
var endTime=new Date(doc.end_time);
emit([doc.type,endTime.getTime()], doc);
}
答案 0 :(得分:0)
您没有在地图中使用startTime
,因此可以将其删除。此外,startkey
在查询字符串中也应为start_key
。
除非你需要能够动态查询类型,否则你可以过滤" trip"在map
中,不使用数组。
if(doc.type && doc.type === 'trip') {
var d = new Date(doc.end_time);
emit(d, doc);
}
如果愿意,您还可以将日期分为年,月,日等数组。例如。 http://danielwertheim.se/2014/05/06/couchdb-partioned-dates-and-group-levels-to-control-aggregation-granularity/
if(doc.type && doc.type === 'trip') {
var d = new Date(doc.end_time);
emit([d.getFullYear(),d.getMonth() + 1,d.getDate()], doc);
}