我有一个包含照片的couchdb数据库,每张照片只有一个文档。我想创建一个基于时间接近度对照片进行分组的视图,即在30分钟内创建的分组照片。
答案 0 :(得分:1)
如果您的照片文档具有在JavaScript中正确整理的“timestamp”元素,您可以创建一个简单的地图,将时间戳作为键发出,然后计算您要查询的窗口。
简单的视图图如下所示:
"mapname": "function(doc) { emit(doc.timestamp) }"
一旦你知道你所关注的照片的时间戳,你就必须生成 startkey 和 endkey 参数设置到你想要的窗口。
CouchDB将返回包含构建网址到照片文档所需的_id值的行。
因此,对于时间戳为1332927024的图片,您的查询将为
http://couchdb/db/_design/designdocname/_view/mapname?startkey=1332926124&endkey=1332927924
答案 1 :(得分:0)
你的js将是你的地图功能,在Ektorp你编写并传递js map函数作为字符串(到我之前发布的代码)。您可以将当前时间作为milis,减去30分钟,并获得所需的时差(在java中)。然后你将mili时间传递给javascript。请记住,您的javascript函数是一个字符串,因此您只需将该字符串所需的差异附加到该字符串即可。您可以写如下:
String javaScriptFunction = "
function(doc) {
if(doc.created >" + timeDifferenceIneed + "){
emit(doc.photoName, doc);
}
} " // of course ignored exiting characters
所以上面,timeDifferenceIneed你当前的时间 - 30分钟。然后将此字符串传递给上方并获取您的查询结果