【发布时间】:2011-07-28 23:33:39
【问题描述】:
我试图让 MongoDB 根据其索引检测重复值。我认为这在 MongoDB 中是可能的,但是通过 Mongoose 包装器,事情似乎被破坏了。所以对于这样的事情:
User = new Schema ({
email: {type: String, index: {unique: true, dropDups: true}}
})
我可以用同一封电子邮件保存 2 个用户。该死。
这里已经表达了同样的问题:https://github.com/LearnBoost/mongoose/issues/56,但该线程已经过时并且无处可去。
现在,我手动调用数据库来查找用户。该电话并不昂贵,因为“电子邮件”已编入索引。不过还是让它原生处理就好了。
有没有人可以解决这个问题?
【问题讨论】:
-
坏消息,mongod v2.4.3,mongoose v3.6.20还是有问题
-
Unique 似乎可以在我的一台主机上运行,但无法在不同主机上使用完全相同的节点/猫鼬代码强制执行唯一性。正常工作的主机运行单个 mongod 3.4.10,不运行的主机使用 mongod 3.2.17 运行副本集。在两台主机上,我从头开始创建一个集合,因此现有的 dup 不是问题。我已经尝试了此页面上的大多数解决方案,其中一个有效的是来自@Isaac Pak 的 mongoose-unique-validator。
-
如果您在现有模型中添加新的唯一字段,请查看此帖子-stackoverflow.com/questions/24430220/…