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