我正在使用Node,Express和MongoDB(使用Mongoskin)进行webbapp。
新客户帐户是通过网络表单创建的,需要输入“公司”,“联系人”,“电子邮件”等等......
创建新客户端时,有些字段在保存到数据库时必须是唯一的。 这些输入包括:'公司','Slug'和'电子邮件'
公司需要独一无二。 Slug 是根据公司名称生成的,也需要是唯一的。
实施例。 'CaféRosegarden'和'Cafe Rosegarden'是两个不同的公司名称,但会产生相同的 slug: 'cafe-rosegarden “
电子邮件。我认为这需要独特......但我实际上并不确定
现在我在这些字段上有三个唯一的唯一索引。
问题1:索引是否是唯一(最好?)方式断言字段的唯一性?
问题2:我是使用复合索引,它如何处理唯一性?例如,我可以说电子邮件只能与一个特定的公司名称结合使用吗?
答案 0 :(得分:1)
是的,为字段添加唯一索引几乎总是确保其在集合中唯一性的最佳方式。
使用复合索引时,MongoDB可确保集合中的每个文档都具有唯一的组合字段值。因此,如果您只有company
和email
的复合唯一索引,那么您可以拥有多个具有相同company
或email
的文档,只要组合使用这两者是独一无二的。