I believe there is a bug in pymongo (or, at least, the documentation) which makes it impossible to run a findandupdate
query.
Here's what happens. When I run:
result = db.command({
'findandmodify': 'my_collection',
'query': {'foo': 'bar'},
'update': {'$set': {'status': 'queued'}},
})
The query that actually gets sent to the server is:
{ 'query': {'foo': 'bar'}, findandmodify: 'my_collection', … }
Note that the query
argument is first, and findandmodify
is second.
But this causes the server to throw up:
OperationFailure: command { 'query': {'foo': 'bar'}, findandmodify: 'my_collection', … } failed: no such cmd
Because the server expects findandmodify
to be first (BSON dicts are, apparently, ordered).
Is there any work around for this?