是否有内置方式表示如果某个字段不为空,则该字段应该是唯一的。例如,我希望用户拥有唯一的电话号码,但这不是必填字段。因此它可以为null,因此如果添加另一个没有电话号码的用户,它会打破唯一约束。
这几乎是同一个问题:mongoDB/mongoose: unique if not null但是对于mongoose和mongodb的新版本,我想应该有更好的方法来实现这一点。
答案 0 :(得分:3)
如果您不想像您提供的答案那样组合稀疏和唯一索引
db.users.ensureIndex({ phone: 1 }, { unique: true, sparse: true });
您可以使用partial index,它不是在mongoose中实现的,但可以作为本机运算符使用。
db.users.createIndex(
{ phone: 1 },
{ partialFilterExpression: { phone: { $exists: true } } }
)