Mongoengine:检查文档是否已经存在于数据库中

4
我正在使用mongoengine工具为MongoDB设计一种初始化程序。
我们将向用户提供的文档从几个JSON文件中读取,并在应用程序启动时使用上述初始化例程将其写入数据库。
其中一些文档具有唯一键,如果向数据库传递重复键的文档,则会引发“mongoengine.errors.NotUniqueError”错误。这不是问题,因为我可以使用“try-except”捕获这些错误。
然而,其他一些文档类似于一堆值或参数,它们没有唯一的键,无法检查以防止它们被插入到数据库两次。
我认为我可以像这样从所需集合中读取所有现有文档:
docs = MyCollection.objects()

使用以下方法检查要插入的文档是否已经在 docs 中可用:

doc = MyCollection(parameter='foo')
print(doc in docs)

即使DB中已经存在一个MyCollection(parameter='foo')文档,下面的代码仍会打印出false

如何在不使用唯一键的情况下实现重复检测?

1个回答

6

您可以使用 if 语句进行检查:

if not MyCollection.objects(parameter='foo'):
    # insert your documents

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接