我试图在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
正如您所看到的,它不断地添加新文档,即使它应该只是更新原始文档。
我很欣赏你的见解!
编辑:事实证明,这段代码工作正常,错误不能重现-这是由我的应用程序中的其他代码引起的,这里没有显示
您在查询中有upsert: True
,当upsert: True
mongo执行插入时,如果没有文档匹配过滤器。
引用文档
插入
可选的。如果设置为true,则在没有文档匹配查询条件时创建新文档。默认值为false,当没有找到匹配项时,不插入新文档。