如果不是null,则检查mongoose

时间:2016-11-23 09:01:04

标签: mongodb mongoose mongoose-schema

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

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

1 个答案:

答案 0 :(得分:3)

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

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

您可以使用partial index,它不是在mongoose中实现的,但可以作为本机运算符使用。

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