Estoy usando mongoengine con MongoDB. Tengo que hacer un documento en el que la tupla (merchant_id, order_id, event_type) tenga que ser una clave única.Mongoengine unique_with
Hasta ahora, siempre he tratado la singularidad estando limitada a dos campos. Así que la siguiente obras-
merchant_id = StringField(required = True)
order_id = StringField(required = True, unique_with = 'merchant_id')
Ahora, que estoy tratando de hacer esto por tres campos -
merchant_id = StringField(required = True)
order_id = StringField(required = True)
event_type = StringField(
required = True,
unique_with = ['merchant_id', 'order_id'])
Pero esto no funciona. No obtengo un error en el módulo. Pero si entro de datos como -
merchant_id = 'Merchant1'
order_id = 'Order1'
event_type = 'Event1'
y luego tratar de añadir otros datos con el mismo merchant_id
y order_id
sino una diferente event_id
, entonces se da un error acerca de ser un duplicado de la llave.
también he intentado:
merchant_id = StringField(required = True)
order_id = StringField(required = True)
event_type = StringField(
required = True,
unique_with = ('merchant_id', 'order_id'))
Tengo lo que era el problema. Parece que una vez que se ha realizado su colección, no puede cambiar la clave única. Entonces, previamente, la singularidad estaba en dos campos y luego la cambié a tres campos. Así que estaba tomando la primera clave definida. Para que la última clave definida surta efecto, debe eliminarse la colección mediante drop_collection(). Entonces funciona. – Siddharth