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

Mongoengine: Check if document is already in DB

我正在使用 mongoengine 为 MongoDB 编写一种初始化例程。

我们提供给用户的文档是从几个 JSON 文件中读取的,并在应用程序启动时使用上述 init 例程写入数据库。

其中一些文档具有唯一键,如果将具有重复键的文档传递给数据库,则会引发 mongoengine.errors.NotUniqueError 错误。这根本不是问题,因为我可以使用 try-except.

捕获这些错误

但是,其他一些文档类似于一堆值或参数。因此,没有可以检查的唯一键,以防止将这些键插入数据库两次。 我以为我可以像这样从所需的集合中读取所有现有文档:

docs = MyCollection.objects()

并检查要插入的文档是否已在 docs 中可用:

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

即使数据库中已经有 MyCollection(parameter='foo') 文档,也会打印 false

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

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

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