MongoDB中的Upsert通过pymongo导致重复插入



我试图在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,当没有找到匹配项时,不插入新文档。

最新更新