mongoengine-在单个查询中的单个字段上按“或”进行过滤

lps

这是我正在寻找的(确实)一个粗糙的示例-给定具有以下架构的文档:

from mongoengine import Document, StringField, DateTimeField

class Client(Document):
    name = StringField()
    activated_on = DateTimeField(required=False)

如何查询从未激活过的客户端或在某个时间点之前未激活的客户端?

换句话说,如果我搜索没有激活日期或在2016-07-22之前发生激活日期的条目,则两个文档都将显示在结果中。

{ "name": "Bob Lawbla" }
{ "name": "Gerry Mander", "activated_on": 2016-07-01T00:00:00 }

我知道我可以做:

Client.objects(activated_on__lte=datetime.datetime(2016,7,22))

Client.objects(activated_on__exists=False)

但是如何将它们组合成一个查询?

杜尔加·达塔(DurgaDatta)

您可以使用Q类

from mongoengine.queryset.visitor import Q as MQ

Client.objects(MQ(activated_on__exists=False)|MQ(activated_on__lte=datetime.datetime(2016,7,22)))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章