Python 具有日期范围的Mongoengine查询

Python 具有日期范围的Mongoengine查询,python,flask,flask-mongoengine,Python,Flask,Flask Mongoengine,我正在尝试在指定的时间范围内通过mongoengine从mongodb检索数据。下面是使用的db模型 class DeviationReport(db.Document): meta = {'collection': 'DeviationReport'} created_at = db.DateTimeField() date = db.DateTimeField() author = db.StringField() read_by = db.ListF

我正在尝试在指定的时间范围内通过mongoengine从mongodb检索数据。下面是使用的db模型

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)
很明显,我已经确定在日期范围内有对象,我也读过其他类似的文章,其中成功地使用了下面的查询。如何让我的查询返回“开始”和“结束”之间的所有内容,或者如何重写它以实现我的愿望


谢谢。

我解决了这个问题,首先使用**kwargs无日期过滤获得结果,然后使用Q进行过滤。这可能不是最优的,但它可以满足我的需要

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

有多种方法可以实现查询,并使用以下示例相应地调整集合和参数:

date_to=datetime.datetime.utcnow()#结束日期
date_from=date_to-datetime.timedelta(天数=120)#开始日期
query\u a=Application.objects(category=“rest\u api”).filter(
创建日期=开始日期,
创建日期=截止日期
)
query_b=Application.objects(
创建日期=开始日期,
创建日期=截止日期
).filter(category=“rest\u api”)
查询={“类别”:“rest_api”}
query_c=Application.objects(
创建日期=开始日期,
创建日期=截止日期,
**质疑
)

按照上面的建议使用Q进行查询对我不起作用,但a确实起了作用:

raw_query = {'date': {'$gte': start, '$lt': end}}
reports = DeviationReport.objects(__raw__=raw_query)