我相信pymongo(或者至少是文档)中存在一个错误,它使得无法运行findandupdate
查询.
这是发生了什么.当我跑:
result = db.command({ 'findandmodify': 'my_collection', 'query': {'foo': 'bar'}, 'update': {'$set': {'status': 'queued'}}, })
实际发送到服务器的查询是:
{ 'query': {'foo': 'bar'}, 'findandmodify': 'my_collection', … }
请注意,query
参数是第一个,findandmodify
是第二个.
但这导致服务器抛出:
OperationFailure: command { 'query': {'foo': 'bar'}, 'findandmodify': 'my_collection', … } failed: no such cmd
因为服务器期望findandmodify
是第一个(BSON dicts显然是有序的).
这有什么工作吗?
对于没有内置排序字典类型的语言,mongo驱动程序包含一个.在python中是SON类型:http://api.mongodb.org/python/1.4%2B/api/pymongo/son.html.您需要将它用于所有命令.
如果仍然失败,请确保您使用的是最新版本的数据库,因为findandmodify是一项新功能.