如何在couchdb中选择持续时间内的文档?

如何在couchdb中选择持续时间内的文档?,couchdb,Couchdb,我有一个包含照片的couchdb数据库,每张照片有一个文档。我想创建一个视图,根据时间接近程度对照片进行分组,即在30分钟内创建的照片组。您的js将是您的映射函数,在Ektorp中,您编写js映射函数并将其作为字符串传递(到我之前发布的代码中)。您可以将当前时间取为毫秒,减去30分钟,然后获取所需的时差(java)。然后,将这一毫秒的时间传递给javascript。请记住,javascript函数是一个字符串,因此只需将所需的差异附加到该字符串。你可以这样写: String javaScript

我有一个包含照片的couchdb数据库,每张照片有一个文档。我想创建一个视图,根据时间接近程度对照片进行分组,即在30分钟内创建的照片组。

您的js将是您的映射函数,在Ektorp中,您编写js映射函数并将其作为字符串传递(到我之前发布的代码中)。您可以将当前时间取为毫秒,减去30分钟,然后获取所需的时差(java)。然后,将这一毫秒的时间传递给javascript。请记住,javascript函数是一个字符串,因此只需将所需的差异附加到该字符串。你可以这样写:

String javaScriptFunction = "
    function(doc) {
      if(doc.created >" + timeDifferenceIneed + "){
       emit(doc.photoName, doc);
      }
    } " // of course ignored exiting characters

如上所述,时差需要您当前的时间-30分钟。然后将此字符串传递到上面并获得查询结果

如果您的照片文档中有一个“timestamp”元素,并在JavaScript中进行了正确整理,则可以创建一个简单的映射,该映射将时间戳作为键发出,然后计算要查询的窗口

简单的视图地图如下所示:

"mapname": "function(doc) { emit(doc.timestamp) }"
一旦知道所关注照片的时间戳,就必须生成设置为所需窗口的startkey和endkey参数

CouchDB将返回带有_id值的行,这些值是您构建照片文档URL所需的

因此,对于时间戳为1332927024的图像,您的查询将是

http://couchdb/db/_design/designdocname/_view/mapname?startkey=1332926124&endkey=1332927924

我懂了。每次执行查询时都会创建临时视图。这会起作用,但会很昂贵。请参阅:它不是临时视图,而是永久视图,存储为文档。