У меня есть коллекция с некоторыми документами вроде:
{
_id: 5,
vals: [100, 1100, 1500]
},
{
_id: 10,
vals: [1100, 1700]
}
Как я могу запросить документы, которые имеют в поле vals
:
- 1100
- 1700 ИЛИ 100
- 100 И 1100
Я могу использовать магию понимания, например:
g = lambda codes: (
d for d in collection.find() if any(code in d["vals"] for code in codes)
)
g([100, 1700]).next()
Или, для AND:
g = lambda codes: (
d for d in collection.find() if all(code in d["vals"] for code in codes)
)
g([100, 1100]).next()
Это кажется немного неуклюжим, хотя, если есть некоторая магия поиска, которую можно сделать с драйвером.