尝试在robomongo客户端使用更新查询更新mongo文档
db.test.update({"name": "test"},{"$kset": {"value": "test_value"}})
,它返回以下异常未知修饰符:$kset这是预期的,但使用pymongo运行相同的查询不会以exception结束,而是返回None。
MongoDB shell版本:2.6.10
pymongo (2.8)
import pymongo
uri = "mongodb://localhost:27017"
client = pymongo.Connection(uri)["test"]
client.test.update({"name": "test"},{"$kset": {"value": "test_value"}})
为什么pymongo默认不返回这样的异常?
如果您使用的是PyMongo 2.8+,请使用PyMongo。已弃用连接。
您应该使用pymongo.MongoClient。如果在代码中使用MongoClient
,如下所示:
client = pymongo.MongoClient(uri)["test"]
你应该得到一个OperationFailure异常,类似于下面:
raise OperationFailure(error.get("errmsg"), error.get("code"), error)
pymongo.errors.OperationFailure: Unknown modifier: $kset
还请注意,MongoDB v2.6已达到2016年10月的生命周期结束,您可能想要升级到当前的稳定版本,即MongoDB v3.2
请参见Python驱动程序兼容性版本。