Mongodb改变了唯一的密钥

时间:2018-03-25 11:21:11

标签: mongodb

我已经让用户通过电子邮件发送了我整个用户数据库的唯一密钥:

var usersSchema = new Schema({
    _id:              String,   // Users Unique Email address
    name:             String,   // Users name
    phone:            String,   // Users phone number
    country:          String,   // Country 
    type:             String,   // tenant/agent/manager/admin
    username:         String,   // Username for login
    password:         String,   // Password string
    trello:           Object,   // Trello auth settings
    settings:         Object,   // Settings for manager and other things
    createDate:       Number,   // Date user was created
    contactDate:      Number,   // Date user was last contacted
    activityDate:     Number    // Date of last activity on this user (update/log/etc)
}); 

那么如果用户更改了电子邮件地址呢?

我是删除记录并再次创建记录的唯一方法吗? 或者有更聪明的方法吗?

users._id(email)在其他16个表中有关系。 预订表示例

var bookingSchema = new Schema({
    _id:                    String,     // Unique booking ID
    user:                   String,     // User ID --> users._id
    property:               String,     // Property ID --> property._id
    checkin:                Number,     // Check in Date
    checkout:               Number      // Check out Date
});

一个用户可以预订很多

我要做的是查找与该电子邮件匹配的所有记录,然后为(i=1 ; i<booking.length ; i++)执行操作,然后更新每条记录的电子邮件

是否有更聪明的方法来更新仅使用一个mongo呼叫匹配的所有电子邮件?

(原因是有很多关系,所以我的循环看起来有点像一种非常原始的方式)

1 个答案:

答案 0 :(得分:0)

我会说为email创建一个字段并在其上创建一个唯一索引会更清晰。

不幸的是,不支持关系数据库中的关系!根据最新的会谈计划本地创建此功能。

最适合您的解决方案是考虑如何使用子文档来使事情更加一致。