Python Pymongo不为"Unknown modifier:"引发异常



尝试在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驱动程序兼容性版本。

相关内容

最新更新