Nav*_*ish 4 mongoose mongodb mongodb-indexes
我创建了一个具有电子邮件字段的猫鼬模型。如果用户提供了值,我希望它是唯一的,但如果用户未提供任何值,我希望它为空。我在这里找到了一个很好的 mongodb 参考:https ://docs.mongodb.com/manual/core/index-partial/#partial-index-with-unique-constraints可以工作,但我不知道如何制作在猫鼬上工作
这就是这个领域现在的样子
email: {
type: String,
index: true,
unique: true
}
Run Code Online (Sandbox Code Playgroud)
如果我保持原样,我将无法使用空/空电子邮件字段创建多个文档
小智 8
在电子邮件路径级别,您只能使用:
email: {
type: String
}
Run Code Online (Sandbox Code Playgroud)
并在架构级别使用:
SchemaName.index({ email: 1 }, {
unique: true,
partialFilterExpression: {
'email': { $exists: true, $gt: '' }
}
});
Run Code Online (Sandbox Code Playgroud)
这样,仅当电子邮件存在且不是空字符串时才应用唯一约束
你可以有类似的东西:
email: {
type: String,
index: {
unique: true,
partialFilterExpression: { email: { $type: 'string' } },
},
default : null
}
Run Code Online (Sandbox Code Playgroud)
但在实际实现之前,请务必阅读下面的链接,因为默认值似乎仅适用于新文档插入:-