2015-11-30 3 views
0

Я работаю над своего рода процедурой инициализации для MongoDB с использованием mongoengine.Mongoengine: проверьте, что документ уже находится в DB

Документы, которые мы доставляем пользователю, считываются из нескольких файлов JSON и записываются в базу данных в начале приложения, используя вышеупомянутую процедуру инициализации.

Некоторые из этих документов имеют уникальные ключи, которые повышают ошибку mongoengine.errors.NotUniqueError, если документ с дублирующимся ключом передается в БД. Это не проблема, так как я могу поймать эти ошибки, используя try-except.

Однако некоторые другие документы представляют собой нечто вроде набора значений или параметров. Таким образом, нет уникального ключа, который можно проверить, чтобы не допустить их вставки в БД дважды. я думал, что я мог читать все существующие документы от желаемой коллекции, как это:

docs = MyCollection.objects() 

и проверить, является ли документ, который будет вставлен уже доступен в docs с помощью:

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

который печатает false даже если в базе уже есть документ MyCollection(parameter='foo').

Как добиться дублирования обнаружения без использования уникальных ключей?

ответ

0

Вы можете проверить с помощью if заявление:

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