Mongoengine查找没有字段的文档

时间:2019-07-04 13:37:42

标签: python mongodb mongoengine

我需要在Chat的集合中找到一个不包含deal字段的文档。根据文档exists检查该字段是否存在,并且first用于检索第一个结果,但检索下一行

Chat.objects.first(deal__exists=False)

提高TypeError: first() got an unexpected keyword argument 'deal__exists'

这就是Chat方案

class Chat(Document):
    id = IntField(primary_key=True)
    name = StringField(default=CHANNEL_NAME)
    invite_link = StringField(default=None)
    deal = ReferenceField("Deal", default=None)

以及集合中唯一文档的当前状态:

{
    "_id" : XXXXXXXXX,
    "name" : "XXXXX",
    "invite_link" : "https://t.me/joinchat/XXXXXXXXXXXXXXXXXXXXXX"
}

none的值deal给出相同的结果

2 个答案:

答案 0 :(得分:2)

您可以尝试:

Chat.objects.get(deal__exists=False)

Chat.objects(deal__exists=False)[0]

找到第一个结果。

答案 1 :(得分:0)

花点时间。

首先,应将方法first应用于Chat.objects(deal=None)的结果。就像Chat.objects(deal=None).first()

由于它会引发with,因此不应在AttributeError: __enter__语句中使用它。 Here是有关该错误的更多详细信息