Nevím o lepším, ale vždy můžete zpracovat pomocí JavaScriptu přes $where
:
jsStr = """var doc = this;
return ['result1','result2','result3']
.every(function(key) {
return doc.hasOwnProperty(key)
});"""
coll.find({ "$where": jsStr })
Ale budete muset zadat pole "klíčů", které chcete někde zkontrolovat.
Pokud si myslíte, že máte k psaní mnoho klíčů, tak proč jednoduše „nevytvořit“ výraz dotazu:
whitelist = [ "result1", "result2", "result3" ]
query = {}
for key in whitelist:
query[key] = { "$exists": True }
coll.find(query)
To ušetří trochu psaní a protože všechny dotazy MongoDB jsou stejně jen datové struktury, použití základní manipulace s daty k vytváření dotazů dává smysl.