我试图在MongoDB中使用upserts。出于某种原因,pymongo.Collection.update
方法在应该更新预先存在的文档时插入新文档(<每次)。
这是我的代码:
print self.visitorCollection.find({"ip": user_ip, "userAgent": user_agent}).count()
self.visitorCollection.update(
{"ip": user_ip, "userAgent": user_agent},
{"$set": {"last_request": currentTime}, "$inc": {"requests": 1}, "$setOnInsert": {"first_request": currentTime, "userAgent": user_agent}},
upsert = True
) # currently not working properly
当集成到我的Flask
应用程序中时,这是我收到的输出:
12
13
14
正如您所看到的,即使它只是更新原始文件,也会不断添加新文档。
我很欣赏任何有关此事的见解!
编辑:事实证明,此代码正常运行且无法再现错误 - 这是由我的应用程序中未显示的其他代码引起的。
答案 0 :(得分:1)
您在查询中有upsert: True
,如果没有文档与过滤器匹配,upsert: True
mongo执行插入时。
<强> UPSERT 强>
可选。如果设置为true,则在没有文档与查询条件匹配时创建新文档。默认值为false,如果未找到匹配项,则不会插入新文档。