创建futon视图并通过在couchDB中传递参数来调用URL



我需要创建一些复杂的查询,你能帮我写吗?

在我的数据库中我有一个文档列表,例如:

{
  "_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并从URL中键入以获取end_time小于或等于当前timestamp且类型为"trip"的文档。这里的类型可以是任何东西,不仅是trip,基于type从URL传递,我应该得到文档。

假设我用SQL编写查询,它将是这样的:

 SELECT * FROM table_name WHERE end_time>="current time passed from the URL as key" and type='type passed from the url as key'

我的视图就像下面现在如何从URL调用这个视图来获得所需的输出

    function(doc){
var startTime=new Date(doc.start_time);
var endTime=new Date(doc.end_time);
emit([doc.type,endTime.getTime()], doc);
    }      

<1是正确的??

     http://localhost:5984/trip/_design/current_trip/_view/current_trip?startkey=["trip",1388607960000]&end_key={}

您没有在地图中使用startTime,因此可以将其删除。另外,startkey在查询字符串中应该是start_key

除非您需要能够动态查询类型,否则您可以在map中筛选"trip",而不使用数组。

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);
}

相关内容

  • 没有找到相关文章

最新更新