尝试使用robomongo客户端中的更新查询更新mongo文档
db.test.update({"name": "test"},{"$kset": {"value": "test_value"}})
并返回以下异常 未知修饰符:$ kset 这是预期的,但使用pymongo运行相同的查询并不是以异常结束,而是返回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没有通过默认返回此类异常?
答案 0 :(得分:1)
如果您使用的是PyMongo 2.8+,则不推荐使用pymongo.Connection。
相反,您应该使用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 has reached end of life October 2016,您可能希望升级到当前的稳定版本,即MongoDB v3.2