我试图确保 MongoAlchemy 支持的模型中的名称唯一性,但不确定如何去做。
我的第一次尝试涉及编写一个包装验证器,它检查具有相同名称的现有数据库条目name
并检查它们(以确保有 0 或 1 个具有相同名称的条目),但这失败了,因为验证器只接收带有name
,而不是整个对象(所以比较mongo_id
s 是不可能的)。
确保单个类的对象都具有唯一name
s 的最佳方法是什么?
我试图确保 MongoAlchemy 支持的模型中的名称唯一性,但不确定如何去做。
我的第一次尝试涉及编写一个包装验证器,它检查具有相同名称的现有数据库条目name
并检查它们(以确保有 0 或 1 个具有相同名称的条目),但这失败了,因为验证器只接收带有name
,而不是整个对象(所以比较mongo_id
s 是不可能的)。
确保单个类的对象都具有唯一name
s 的最佳方法是什么?
您应该使用唯一索引。
http://www.mongoalchemy.org/api/schema/document.html#mongoalchemy.document.Index
>>> class Person(Document):
... name = StringField()
... name_index = Index().ascending('name').unique()
数据库将为您强制执行约束。它只是包装了 mongo 在这里已经拥有的代码:
http://docs.mongodb.org/manual/tutorial/create-a-unique-index/