我可以使用一些帮助过滤couchdb视图中的不同值.我有一个数据库,用于存储包含计算机信息的日志.定期将计算机的新日志写入db.
有点简化我存储这样的条目:
{
"name": "NAS",
"os": "Linux",
"timestamp": "2011-03-03T16:26:39Z",
}
{
"name": "Server1",
"os": "Windows",
"timestamp": "2011-02-03T19:31:31Z",
}
{
"name": "NAS",
"os": "Linux",
"timestamp": "2011-02-03T18:21:29Z",
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我正在努力通过不同的条目过滤此列表.我想收到的是每个设备的最新日志文件.
我有这样的观点:
function(doc) {
emit([doc.timestamp,doc.name], doc);
}
Run Code Online (Sandbox Code Playgroud)
我用python(couchdbkit)查询这个视图,到目前为止我提出的最佳解决方案看起来像这样:
def get_latest_logs(cls):
unique = []
for log in cls.view("logs/timestamp", descending=True):
if log.name not in unique_names:
unique.append(log)
return unique
Run Code Online (Sandbox Code Playgroud)
好的......这很有效.但我有强烈的感觉,这不是最好的解决方案,因为python需要迭代整个日志文件列表(可能会变得很长).
我想我需要一个reduce函数,但我无法找到任何可以适应我的问题的例子或解释.
所以,我正在寻找的是一个(纯couchdb)视图,它只会吐出给定设备的最新日志.