MongoDB / PyMongo: Consultando vários critérios - resultados inesperados

Eu tenho uma coleção em que alguns dos objetos apresentam uma chavefoo. Agora tento consultar todos os objetos que realmente possuem essa chave, mas não com o valor específicobar. Para isso, uso a seguinte consulta:

collection.find({'foo': {'$exists': True}, 'foo': {'$ne': 'bar'}})

Eu pensei que ambos os critérios estão conectados através de um AND lógico. No entanto, também recebo objetos que não apresentam chavefoo. Na verdade, eu recebo o mesmo resultado quando apenas uso a consulta

collection.find({'foo': {'$ne': 'bar'}})

Por outro lado, se eu usar

collection.find({'foo': {'$exists': True}})

Eu recebo corretamente apenas objetos comfoo mas obvisouly todos eles, então alguns deles têm o valorbar.

Como preciso formular minha consulta para alcançar meu resultado inicial? Existe um tipo de ordem na qual vários critérios são testados? Especifico explicitamente o AND lógico de ambos os critérios?

questionAnswers(2)

yourAnswerToTheQuestion