Sto usando mongoengine con MongoDB. Devo creare un documento in cui la tupla (merchant_id, order_id, event_type) deve essere una chiave univoca.Mongoengine unique_with
Fino ad ora, ho sempre avuto a che fare con l'univocità limitata a due campi. Così il seguente works-
merchant_id = StringField(required = True)
order_id = StringField(required = True, unique_with = 'merchant_id')
Ora, io sto cercando di fare questo per tre campi -
merchant_id = StringField(required = True)
order_id = StringField(required = True)
event_type = StringField(
required = True,
unique_with = ['merchant_id', 'order_id'])
Ma questo non funziona. Non ricevo un errore nel modulo. Ma se entro dati -
merchant_id = 'Merchant1'
order_id = 'Order1'
event_type = 'Event1'
e poi provo ad aggiungere un altro dato con la stessa merchant_id
e order_id
ma un diverso event_id
, allora dà un errore di essere una chiave duplicata.
Ho anche provato:
merchant_id = StringField(required = True)
order_id = StringField(required = True)
event_type = StringField(
required = True,
unique_with = ('merchant_id', 'order_id'))
ho ottenuto quello che era il problema. Sembra che una volta creata la tua collezione, non puoi cambiare la chiave univoca. Quindi in precedenza l'unicità era su due campi e poi l'ho cambiato in tre campi. Quindi stava prendendo la prima chiave definita. Affinché l'ultima chiave definita abbia effetto, è necessario eliminare completamente la raccolta utilizzando drop_collection(). Quindi funziona. – Siddharth