2012-03-27 69 views

回答

0

您的js将是您的地图功能,并且在Ektorp中,您将写入js map函数并将其作为字符串传递给我之前发布的代码。您可以将当前时间作为milis,减去30分钟,并获取所需的时间差(以java计算)。然后你将这个毫秒时间传递给javascript。记住你的javascript函数是一个字符串,所以你只需要将所需的差异追加到该字符串。你可以编写如下:

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

所以上面的,timeDifferenceIneed你现在的时间--30分钟。然后将此字符串传递给上方并获得查询结果

+0

我明白了。每次执行查询时都会创建一个临时视图。这将工作,但将是昂贵的。请参阅:http://wiki.apache.org/couchdb/Introduction_to_CouchDB_views#Concept – user1294586 2012-03-27 21:51:41

+0

不是临时视图,它是永久性视图并以文档形式存储。 – anvarik 2012-03-27 22:10:57

1

如果您的照片文档具有可在JavaScript中正确整理的“timestamp”元素,则可以创建一个简单的地图,将时间戳作为关键字发送,然后计算窗口你想查询。

简单查看地图应该是这样的:

"mapname": "function(doc) { emit(doc.timestamp) }" 

一旦你知道你专注于照片的时间戳,你就必须产生startkeyendkey参数设置为你想要的窗口。

CouchDB将返回具有您需要为照片文档构建URL的_id值的行。

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

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