【问题标题】:Mongodb ensure one array field uniqueMongodb保证一个数组字段唯一
【发布时间】:2018-03-09 02:03:14
【问题描述】:

我正在尝试使电子邮件变得独一无二。我尝试使用 'unique' 和 'dropDups',但它不起作用。知道我应该使用什么吗?

var custSchema = new Schema({ 
  "username": String,
  "Password": String,
  "email": {["Type": String,
             "Value": { type : String, lowercase: true, unique: true, dropDups: true}]
})  

csv 数据示例:

        username       Password            Email
                                      Type     Value
User1:   test1        asdub**jhas    Primary   test1@user1.com
User2:   test2        3kjnn**8man    Primary   Pract@test.com
User3:   test3        dsffs**as97    Primary   test1@user1.com

在本例中,只有两个用户添加到数据库中:User1 和 User2,因为 User3 与 User1 具有相同的电子邮件地址。

感谢您的帮助。

【问题讨论】:

    标签: arrays mongodb unique


    【解决方案1】:

    使用选项unique: trueemail.Value 创建一个索引,这将帮助我们防止为电子邮件ID 插入重复值。

    db.collection_name.createIndex({"email.Value":1}, {unique:true})
    

    参考资料:

    CreateIndex

    Another SO Question

    【讨论】:

    • 我把这个放在我的 Schema.js 中,但它抱怨找不到'db'。
    • 此语法适用于 Mongodb shell,您必须修改查询以使其适合您的编程语言
    【解决方案2】:

    可能有其他解决方案可以解决此问题。但是在我尝试将“电子邮件”定义为

    "Email": [
    {"Type": String,
      "Value": { type : String, lowercase: true, index: {unique: true, dropDups: true}}
    }]
    

    它工作正常。

    【讨论】:

    • 你和我的方法相同,即具有唯一索引。
    猜你喜欢
    • 1970-01-01
    • 2019-03-22
    • 2016-09-11
    • 2014-10-28
    • 2012-09-05
    • 1970-01-01
    • 2016-01-18
    • 2014-02-24
    • 1970-01-01
    相关资源
    最近更新 更多