让 PyMongo + MongoDB 2.6 继续支持空 $set

tl;dr 这只是一个丑陋的 monkey-patch 方法.

在 MongoDB 2.4 及以前版本中, db.foo.update({…}, {“$set”: {}}), 也即 “空 $set” 是可以正常执行的. 配合 upsert 等参数执行时可以有不同的方便用法. 但是升级到 MongoDB 2.6 以后, 由于引入了严格的参数检查, 试图进行空 $set 操作时, 会出现这样的错误:

由于本猫不太想改依赖这个方法的代码逻辑(有点多…), 于是写了一个丑陋的 monkey patch 来 workaround 这个问题:

上游 Bug Report: https://jira.mongodb.org/browse/SERVER-12266 (已经确定不会修)

One thought on “让 PyMongo + MongoDB 2.6 继续支持空 $set”

Leave a Reply

Your email address will not be published.