2012-03-27 24 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