如何查询 Python mongoengine 查询集?

How to query a Python mongoengine Queryset?

如何查询MongoEngine返回的queryset?根据文档,我找不到有关查询查询集的任何信息:http://docs.mongoengine.org/apireference.html#mongoengine.queryset.QuerySet

import datetime
thirty_days_in_the_past = datetime.datetime.now() - datetime.timedelta(days=30)

def last_messages(from_date):
    messages = Messages.objects(sent_at__gt=from_date)
    return messages

messages = last_messages(thirty_days_in_the_past)

然后我想获取带有特定子查询的消息,例如查找 author_id "ABC":

messages.query(author_id="ABC")

我希望这样做的原因是初始查询本身由一个组件使用,而它的子查询由另一个组件使用,我想重用该查询。

只需使用缩小的查询调用查询集或使用 .filter()(这只是一个别名)。出于某种原因,mongoengine documentation 并没有真正提到仅使用另一个查询(以及 filter 的存在)调用查询集的可能性。

author_messages = messages(author_id="ABC")
# or
author_messages = messages.filter(author_id="ABC")

"Fun fact",mongoengine 从中汲取了大量灵感的 django orm(整个查询语言,包括 __ 关键字语法)确实在其 filter 中提到了方法 docs :)