我创建了一个带有电子邮件字段的猫鼬模型。如果用户提供了值,我希望它是唯一的,但如果用户未提供任何值,我希望它为空。我在这里找到了一个很好的mongodb参考:https://docs.mongodb.com/manual/core/index-partial/#partial-index-with-unique-constraints可以工作,但我不知道如何使它在猫鼬上工作
这是该字段现在的样子
email: {
type: String,
index: true,
unique: true
}
如果保持原样,我将无法使用电子邮件字段为空/空创建多个文档
答案 0 :(得分:3)
在电子邮件路径级别,您只能使用:
email: {
type: String
}
在架构级别使用:
SchemaName.index({ email: 1 }, {
unique: true,
partialFilterExpression: {
'email': { $exists: true, $gt: '' }
}
});
这样,仅当电子邮件存在且不是空字符串时,才应用唯一约束
答案 1 :(得分:0)
您可以拥有类似的东西:
email: {
type: String,
index: {
unique: true,
partialFilterExpression: { email: { $type: 'string' } },
},
default : null
}
但是在实际实现它之前,请务必阅读以下链接,因为默认设置似乎仅对新文档插入有效:-