Я считаю, что в 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).
Есть ли какое-нибудь решение для этого?