pymongo:findandmodify - 返回"no such command"

Dav*_*ver 3 python mongodb pymongo

我相信pymongo(或者至少是文档)中存在一个错误,它使得无法运行findandupdate查询.

这是发生了什么.当我跑:

    result = db.command({
        'findandmodify': 'my_collection',
        'query': {'foo': 'bar'},
        'update': {'$set': {'status': 'queued'}},
    })
Run Code Online (Sandbox Code Playgroud)

实际发送到服务器的查询是:

{ 'query': {'foo': 'bar'}, 'findandmodify': 'my_collection', … }
Run Code Online (Sandbox Code Playgroud)

请注意,query参数是第一个,findandmodify第二个.

但这导致服务器抛出:

OperationFailure: command { 'query': {'foo': 'bar'}, 'findandmodify': 'my_collection', … } failed: no such cmd

因为服务器期望findandmodify是第一个(BSON dicts显然是有序的).

这有什么工作吗?

mst*_*arn 6

对于没有内置排序字典类型的语言,mongo驱动程序包含一个.在python中是SON类型:http://api.mongodb.org/python/1.4%2B/api/pymongo/son.html.您需要将它用于所有命令.

如果仍然失败,请确保您使用的是最新版本的数据库,因为findandmodify是一项新功能.

  • 参考"当前(构建)"网址http://api.mongodb.org/python/current/api/bson/son.html (2认同)