猫鼬字段不是必需的但唯一

Nic*_*tti 2 javascript mongoose node.js

我有一个设置为唯一的电子邮件字段,但这不是必需的。

问题是,如果用户不输入任何内容,猫鼬会在其中输入“ null”。这将导致重复,因为每个未输入电子邮件字段的用户都将被分配“空”。

避免这种情况的标准做法是什么?

谢谢

小智 5

使用稀疏的唯一索引

如果文档没有字段值,则该项目的索引条目在包含该字段的任何索引中将为null。因此,在许多情况下,您需要将唯一约束与稀疏选项结合在一起。稀疏索引将跳过缺少索引字段的所有文档,而不是为索引条目存储null。

db.collection.createIndex( { a: 1, b: 1 }, { unique: true, sparse: true } )

详细信息:https : //docs.mongodb.com/v3.0/tutorial/create-a-unique-index/

  • “如果集合已包含违反索引唯一约束的数据,MongoDB 无法在指定索引字段上创建唯一索引。” (2认同)