Tôi đang sử dụng mongoengine với MongoDB. Tôi phải tạo một Tài liệu trong đó bộ dữ liệu (merchant_id, order_id, event_type) phải là một khóa duy nhất.Mongoengine unique_with
Cho đến bây giờ, tôi đã luôn xử lý tính duy nhất bị giới hạn ở hai trường. Vì vậy, sau works-
merchant_id = StringField(required = True)
order_id = StringField(required = True, unique_with = 'merchant_id')
Bây giờ, tôi đang cố gắng để làm điều này cho ba lĩnh vực -
merchant_id = StringField(required = True)
order_id = StringField(required = True)
event_type = StringField(
required = True,
unique_with = ['merchant_id', 'order_id'])
Nhưng điều này không làm việc. Tôi không gặp lỗi trong mô-đun. Nhưng nếu tôi nhập dữ liệu như -
merchant_id = 'Merchant1'
order_id = 'Order1'
event_type = 'Event1'
và sau đó cố gắng thêm dữ liệu khác với cùng merchant_id
và order_id
nhưng một khác nhau event_id
, sau đó nó mang lại cho một lỗi về việc bị một chìa khóa trùng lặp.
Tôi cũng đã cố gắng:
merchant_id = StringField(required = True)
order_id = StringField(required = True)
event_type = StringField(
required = True,
unique_with = ('merchant_id', 'order_id'))
tôi nhận được những gì các vấn đề được. Dường như khi bộ sưu tập của bạn đã được tạo, bạn không thể thay đổi khóa duy nhất. Vì vậy, trước đây tính duy nhất là trên hai lĩnh vực và sau đó tôi đã thay đổi nó thành ba lĩnh vực. Vì vậy, nó đã được lấy chìa khóa đầu tiên được xác định. Để khóa mới nhất được xác định có hiệu lực, người ta phải bỏ toàn bộ bộ sưu tập bằng cách sử dụng drop_collection(). Sau đó, nó hoạt động. – Siddharth