Я использую Mongoengine и хочу удалить тег, если он существует. Если тег не существует, я хочу добавить его. Но мой код на самом деле не работает.
try:
Project.objects.filter(literature__oid=id).update_one(
pull__literature__S__tags=tag_name)
print("wanna delete "+tag_name)
except:
Project.objects.filter(literature__oid=id).update_one(
push__literature__S__tags=tag_name)
print("wanna add"+tag_name)
этот код только удаляет тег из базы данных, но он не попадает в исключающую часть, если тег не существует. Поэтому он всегда запускает удаление, даже если тег не существует. Есть ли другой метод, который я мог бы использовать? Пока я ничего не нашел ...
поле тегов литературы - это ListField. Например, теги в mongoDB выглядят так:
"tags": ["irrelevant", "relevant", "test"]
Мои модели в основном выглядят так:
class Literature(EmbeddedDocument):
oid = ObjectIdField(required=True, default=ObjectId,
unique=True, primary_key=True, sparse=True)
tags = ListField()
class Project(Document):
project_name = StringField(unique=True, required=True)
literature = ListField(EmbeddedDocumentField(Literature))
Спасибо