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
我正在使用 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