我已经让用户通过电子邮件发送了我整个用户数据库的唯一密钥:
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呼叫匹配的所有电子邮件?
(原因是有很多关系,所以我的循环看起来有点像一种非常原始的方式)
答案 0 :(得分:0)
我会说为email
创建一个字段并在其上创建一个唯一索引会更清晰。
不幸的是,不支持关系数据库中的关系!根据最新的会谈计划本地创建此功能。
最适合您的解决方案是考虑如何使用子文档来使事情更加一致。