【问题标题】:Mongodb changing the unique keyMongoDB更改唯一键
【发布时间】:2018-03-25 20:47:29
【问题描述】:

我已让用户电子邮件成为我整个用户数据库的唯一键:

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 调用?

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

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    我会说为email 创建一个字段并在其上创建一个唯一索引要干净得多。

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

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

    【讨论】:

    • Ehsan 它仍然不能解决我当前的任何问题 :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-15
    • 2018-06-04
    • 1970-01-01
    • 1970-01-01
    • 2011-09-07
    • 1970-01-01
    • 2015-11-23
    相关资源
    最近更新 更多