如何在MongoDB中维护历史快照

时间:2014-09-22 07:41:35

标签: python mongodb pymongo

我在mongoDB中有一个庞大的对象集合。这些基本上是从他们的API获取的购物网站的产品。存储如:

{
    "id": "some_id"
    "baseInfo": {
        "identifiers": {
            "attributes": {
                "description": "some desc"
                "title": "some title"
                "price": {
                    "amount": "amount"
                    "currency": "currency"
                }
                "....": "..."
                ... snip ....
            }
        }
    }
}

此信息不断变化,并由连续点击其API的python脚本更新。

最简单的方法是在哪个时间维护哪个对象发生了什么变化。例如: 在第N次运行的脚本中,在时间T1,ID = I的产品,将其价格从P1改为P2。类似地,N + 1在时间T2运行,价格变为P3。那么基本上什么是存储ID = I的产品定价历史的最简单方法?

1 个答案:

答案 0 :(得分:0)

我会改变python脚本来跟踪新集合中的更改。使用findAndModify更新每个产品并以原子方式检索旧版本,然后将旧版本推送到另一个历史信息集合,附加到有效日期(或日期范围)以及可能的版本号。您也可以通过计算旧版本和新版本之间的更改并将其存储在集合中来更改新的集合存储。