No sé si es mejor, pero siempre puedes procesar con JavaScript a través de $where
:
jsStr = """var doc = this;
return ['result1','result2','result3']
.every(function(key) {
return doc.hasOwnProperty(key)
});"""
coll.find({ "$where": jsStr })
Pero tendrá que especificar una matriz de "claves" para buscar en algún lugar.
Si cree que tiene muchas claves para escribir, ¿por qué no simplemente "construir" su expresión de consulta:
whitelist = [ "result1", "result2", "result3" ]
query = {}
for key in whitelist:
query[key] = { "$exists": True }
coll.find(query)
Eso ahorra un poco de escritura y dado que todas las consultas de MongoDB son solo estructuras de datos de todos modos, entonces tiene sentido usar la manipulación básica de datos para crear consultas.