Моноинженерный запрос с диапазоном дат - PullRequest
0 голосов
/ 13 марта 2019

Я пытаюсь получить данные из mongodb через mongoengine в течение указанного промежутка времени. Ниже приведена используемая модель БД.

class DeviationReport(db.Document):
    meta = {'collection': 'DeviationReport'}
    created_at = db.DateTimeField()
    date = db.DateTimeField()
    author = db.StringField()
    read_by = db.ListField(default=[])
    prod_line = db.ReferenceField(ProductionLine)
    product = db.ReferenceField(Product)
    description = db.StringField()

То, что я пробовал, это код ниже. Однако он не возвращает никаких результатов. Я использовал аналогичный подход, когда мне нужно было создавать динамические запросы в зависимости от пользовательского ввода.

kwargs = {}
start = datetime.datetime(2018, 12, 11)
end = datetime.datetime(2019, 03, 13)
kwargs['created_at'] = { '$lt': end, '$gt': start }
DeviationReport.objects(**kwargs)

Я, очевидно, позаботился о том, чтобы в пределах диапазона дат были объекты, и я прочитал другие подобные посты, где приведенный ниже запрос был успешно использован. Как мне заставить мой запрос вернуть все между «началом» и «концом», или как мне переписать его так, как я хочу?

Спасибо.

1 Ответ

0 голосов
/ 15 марта 2019

Я обошел / решил проблему, сначала получив мои результаты без фильтрации даты, используя ** kwargs, а затем отфильтровал это, используя Q. Это может быть неоптимальным, но это работает для того, что мне нужно, чтобы сделать.

reports = DeviationReport.objects(**kwargs)
reports = reports.filter((Q(date__gte=start) & Q(date__lte=end)))
...