MongoDB Upsert:$仅在更新时设置,而不在插入时设置

时间:2015-03-11 15:42:39

标签: python mongodb pymongo upsert

您好我很难获得使用MongoDB的插件。我的架构基本上会是这样的。我将每小时录制一次页面点击。我将为许多不同的页面录制这个,因此效率很重要。我读过更新比写作更有效率。

{
    "_id" : "UniqueID:Month",
    "hits": { "0" : {"0":0, "1":0, ..."23":0},
              "1" : {"0":0, "1":0, ..."23":0},
              ...
              "23" : {"0":0, "1":0, ..."23":0}
    }
}

当页面不存在时,我想插入完整的架构

"hits": {"0": {"0": 0, "1": 0, "2": 0, "3": 0, "4": 0, "5": 0}}...

当页面确实存在时,只需设置:

 '$set': {"hits": {str(day): {str(hour): page_view}}}

我写了代码:

collection.update(
    {"_id": "UniqueID:" + str(month)},
    {
        '$set': {"hits": {str(day): {str(hour): page_view}}},
        '$setOnInsert': {"hits": {"0": {"0": 0, "1": 0, "2": 0, "3": 0, "4": 0, "5": 0}}}
    },
    True
)

我的问题是,当文档不存在时,它运行$ set和$ setOnInsert,这会导致错误同时更新命中。有没有办法当文件不存在时才运行$ setOnInsert?

编辑:我没有我将要跟踪的确切页面列表,因此我无法为每个页面创建文档。

提前致谢。

0 个答案:

没有答案