Я использую mongoengine с MongoDB. Мне нужно создать документ, в котором кортеж (merchant_id, order_id, event_type) должен быть уникальным ключом.
До сих пор я всегда имел дело с ограничением уникальности двумя полями. Итак, следующее работает -
merchant_id = StringField(required = True)
order_id = StringField(required = True, unique_with = 'merchant_id')
Теперь я пытаюсь сделать это для трех полей -
merchant_id = StringField(required = True)
order_id = StringField(required = True)
event_type = StringField(
required = True,
unique_with = ['merchant_id', 'order_id'])
Но это не работает. Я не получаю сообщение об ошибке в модуле. Но если я введу данные как -
merchant_id = 'Merchant1'
order_id = 'Order1'
event_type = 'Event1'
, а затем попытаюсь добавить другие данные с теми же merchant_id
и order_id
, но с другим event_id
, то получится ошибка о дублировании ключа.
Я также пробовал:
merchant_id = StringField(required = True)
order_id = StringField(required = True)
event_type = StringField(
required = True,
unique_with = ('merchant_id', 'order_id'))