我正在尝试确保MongoAlchemy支持的模型中的名称唯一性,并且不确定如何去做。
我的第一次尝试涉及编写一个包装验证器,它检查具有相同name
的现有数据库条目并对其进行检查(以确保存在0或1个具有相同名称的条目),但这失败,因为验证器只接收带有name
的字符串,而不是整个对象(因此不可能比较mongo_id
)。
确保单个班级的对象都具有唯一name
的最佳方式是什么?
答案 0 :(得分:1)
您应该使用唯一索引。
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/