我在MongoDB中使用了mongoengine。我必須創建一個文檔,其中元組(merchant_id,order_id,event_type)必須是唯一鍵。直到現在,我一直處理的唯一性限於兩個領域。所以下面的工程─Mongoengine unique_with
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'))
我得到了什麼問題。 看來,一旦你的收藏已經完成,你不能改變唯一的關鍵。因此,以前的唯一性是在兩個領域,然後我將其改爲三個領域。所以它正在確定第一個關鍵。 要使定義的最新鍵生效,必須使用drop_collection()完全刪除集合。 然後它工作。 – Siddharth