我将电子邮件字段设置为唯一,但不是必需的。
问题是如果用户没有输入任何东西,Mongoose会在其中输入“null”。这会导致重复,因为每个未输入电子邮件字段的用户都会为其分配“null”。
避免这种情况的标准做法是什么?
由于
答案 0 :(得分:4)
如果文档没有字段值,则索引条目为 该项在包含它的任何索引中都将为null。因此,在很多方面 你想要将唯一约束与 稀疏选项。稀疏索引会跳过任何缺少的文档 索引字段,而不是为索引条目存储null。
db.collection.createIndex( { a: 1, b: 1 }, { unique: true, sparse: true } )
更多信息:https://docs.mongodb.com/v3.0/tutorial/create-a-unique-index/