您好我很难获得使用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?
编辑:我没有我将要跟踪的确切页面列表,因此我无法为每个页面创建文档。
提前致谢。