猫鼬中的唯一如果不是空检查

Posted

技术标签:

【中文标题】猫鼬中的唯一如果不是空检查【英文标题】:Unique if not null check in mongoose 【发布时间】:2017-04-07 04:41:47 【问题描述】:

是否有一种内置的方式来表示如果字段不为空,则该字段应该是唯一的。例如,我希望用户拥有唯一的电话号码,但这不是必填字段。所以它可以为空,因此如果添加另一个用户而没有电话号码,它会打破唯一约束。

这几乎是同一个问题:mongoDB/mongoose: unique if not null 但对于新版本的 mongoose 和 mongodb,我想应该有更好的方法来实现这一点。

【问题讨论】:

您可以使用具有唯一约束的部分索引参考:docs.mongodb.com/v3.2/core/index-partial/… 【参考方案1】:

如果您不喜欢像您提供的答案那样组合稀疏索引和唯一索引

db.users.ensureIndex( phone: 1 ,  unique: true, sparse: true );

您可以使用partial index,它没有在 mongoose 中实现,但可用作原生运算符。

db.users.createIndex(
    phone: 1 ,
    partialFilterExpression:  phone:  $exists: true   
)

【讨论】:

以上是关于猫鼬中的唯一如果不是空检查的主要内容,如果未能解决你的问题,请参考以下文章

猫鼬中的虚拟对象,“this”是空对象

猫鼬中的 findOne 返回空对象,然后返回正确的对象

Model.find() 在猫鼬中返回空 [重复]

Model.find() 在猫鼬中返回空 [重复]

文档创建猫鼬中的自动增量版本

文档创建猫鼬中的自动增量版本