Можно ли построить конвейерный запрос в переменную, а затем использовать переменную для "count_documents", используя pymongo? - PullRequest
0 голосов
/ 02 января 2019

Я использую Python 3.7 с пакетом pymongo 3.7.2.У меня есть запрос для подсчета количества документов, соответствующих некоторым критериям, где поле даты (в запросе "tpep_pickup_datetime") находится между определенными пределами.Приведенный ниже запрос MongoDB прекрасно работает в оболочке Mongo и коде Python, установленном между 0000 часами и 0100 часами:

countRequired = collection.count_documents( {"tpep_pickup_datetime": {"$gte": "2018-06-01 00:00:00", "$lt": "2018-06-01 01:00:00"}} )

Но теперь мне нужно указать ограничения времени, использованные выше, используя строковую переменную, которую я выберуиз списка в общем цикле.Поэтому я хочу использовать конвейерную переменную для построения запроса.А затем используйте переменную конвейера, как я часто делал для запросов агрегатного типа.Что я хочу сделать, это:

1) конвейер = [].Например, конвейер для одной итерации моего цикла будет построен как [{"tpep_pickup_datetime": {"$ gte": "2018-06-01 00:00:00", "$ lt": "2018-06-0101:00:00 "}}] и следующий цикл будет выглядеть как [{" tpep_pickup_datetime ": {" $ gte ":" 2018-06-01 01:00:00 "," $ lt ":" 2018-06-01 02:00:00 "}}] и, таким образом, циклически проходите каждый из 24 часов.

2) Далее используйте переменную конвейера следующим образом:

countRequired = collection.count_documents( pipeline )

Но яполучить сообщение об ошибке «OperationFailure: фильтр соответствия должен быть выражением в объекте».Извините, но история трассировки очень длинная, и я не могу вставить ее сюда.

Спасибо и С уважением, rbewoor

...