标签: couchdbkit

CouchDB - 从列表中筛选每个记录实例的最新日志

我可以使用一些帮助过滤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)视图,它只会吐出给定设备的最新日志.

python couchdb mapreduce couchdbkit

3
推荐指数
1
解决办法
744
查看次数

标签 统计

couchdb ×1

couchdbkit ×1

mapreduce ×1

python ×1