检索已在记录中更新的字段

时间:2015-04-23 17:47:01

标签: python flask couchdb

我可以检索视图中已更新的字段吗?理想情况下,我可以检索已更新的字段总数(项目已添加到列表字段或字段已更改)以及各个字段的名称/计数。

给出db记录,例如:

{
    "_id": "e3cfb5e19e5c05fb6822c5ee228c4f2e",
    "_rev": "52-c78a26776b0e0736dd45e44a47634031",
    "last_updated": "23/04/2015",
    "title", "testdoc",
    "samples": [
        {
            "confidence": "high",
            "handle": "joetest"
        }
    ],
    "locations": [
        {"Toronto", "Ontario"},
        {"Vancouver", "British Columbia"}
    ]
}

如果“样本”中有2个新项目,“位置”中有1个,我会看到更新的数量为3.

1 个答案:

答案 0 :(得分:1)

假设您在更新数据之前检索数据,您可以在数据更新后将其与数据进行比较。以下简单函数查看原始数据中包含数组的任何键,并返回新数据的长度。

def list_delta(before, after):
    out = {}

    for key in before:
        if isinstance(before[key], list):
            out[key] = len(after[key]) - len(before[key])

    return out

before = {'name': 'davidism', 'numbers': [0, 1, 2, 3, 4]}
after = do_update(before)
# after = {'name': 'davidism', 'numbers': [0, 1, 2, 3, 4, 5]}
list_delta(before, after)
# returns {'numbers': 1}

您可以更聪明地比较是否添加或删除了键,或者实际值是否已更改,或者是否对嵌套结构进行了更深入的递归比较,但这超出了此答案的范围。