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?