Предположим, что в моей коллекции c
есть записи, подобные этой:
{ "_id": 1, "mydict":{"foo":..., "bar":..., "baz":..}, ...}
{ "_id": 2, "mydict":{"foo":..., "quux":..., "zot":..}, ...}
{ "_id": 3, "mydict":{"fuu":..., "quux":..., "xxx":..}, ...}
Я хочу выбрать из данного набора записи, содержащие любые ключи, например, ["baz","zot"]
, имеют положительные значения в поле mydict
.
Я мог бы написать что-то вроде
c.find(query={
"$or":[
{"mydict.baz":{"$gt":0}},
{"mydict.zot":{"$gt":0}},
]})
, но список ключей будет намного больше 2, поэтому я бы предпочел что-то более компактное ( Конечно, я могу сгенерировать запрос, но это не главное).
Что если мне нужно просто проверить, присутствуют ли ключи в mydict
?
Есть ли что-то вроде
c.find(query={"$keys(mydict)":{"$intersect":["foo","bar","xxx","yyy","zzz"]}})