我正在使用mongoengine为MongoDB开发一种初始化例程。
我们提供给用户的文档是从几个JSON文件中读取的,并在应用程序启动时使用上面提到的init例程写入数据库。
其中一些文档具有唯一键,如果将具有重复键的文档传递给DB,则会引发mongoengine.errors.NotUniqueError
错误。这根本不是问题,因为我能够使用try-except
来捕获这些错误。
但是,其他一些文档就像是一堆值或参数。因此,没有唯一的密钥可以检查以防止这些密钥被插入到DB两次。 我想我可以从所需的集合中读取所有现有文档,如下所示:
docs = MyCollection.objects()
并使用以下内容检查要插入的文档是否已在docs
中可用
doc = MyCollection(parameter='foo')
print(doc in docs)
即使数据库中已存在false
文档,也会打印MyCollection(parameter='foo')
。
如何在不使用唯一键的情况下实现重复检测?
答案 0 :(得分:1)
您可以使用if
声明进行检查:
if not MyCollection.objects(parameter='foo'):
# insert your documents