Viv*_*edi 0 mongoose mongodb mongoose-schema
如果字段不为空,是否有内置的方法来说明字段应该是唯一的。例如,我希望用户拥有唯一的电话号码,但这不是必填字段。因此它可以为空,因此如果添加了另一个没有电话号码的用户,它将打破唯一约束。
这几乎是同一个问题:mongoDB/mongoose: unique if not null但对于mongoose和 mongodb 的较新版本,我想应该有更好的方法来实现这一点。
如果您不喜欢像您提供的答案那样结合稀疏索引和唯一索引
db.users.ensureIndex({ phone: 1 }, { unique: true, sparse: true });
Run Code Online (Sandbox Code Playgroud)
您可以使用partial index,它未在 mongoose 中实现,但可用作本机运算符。
db.users.createIndex(
{ phone: 1 },
{ partialFilterExpression: { phone: { $exists: true } } }
)
Run Code Online (Sandbox Code Playgroud)