我在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