新的猫鼬布尔属性,每个人都为真,默认为假
New mongoose boolean attribute, everyone at true, default is false
我有一个用于生产的 UserModel。我想添加一个布尔属性 (isRegistered)。对于已经在我的平台上的人,我希望这个新属性是真实的。对于新用户,我希望它默认为false。
如何将 default: false
放入我的猫鼬模型中,但对已经在这里的人来说是正确的?
谢谢!
我建议:
- 1) 将
default: false
添加到您的 Mongoose 模型中的 isRegistred
属性
- 2) 运行 查询更新
isRegistered
到 true
每个在特定日期和时间之前在您的平台上注册的人(例如,您部署更新模型投入生产)
这样,您所有的老用户都将被标记为已注册,而未来的用户则不会。我假设您或 MongoDB 正在跟踪某人注册的日期。
你的模式应该是这样的:
var UserSchema = new Schema({
name: String,
isRegistered: { type: boolean, default: false }
});
因此,默认情况下,所有用户的 isRegistered
字段都将是 false
并且已经插入到您的 User
集合中的文档不会有字段 isRegistered
。因此,您可以更新集合中的所有文档以包含该字段。
因此您可以执行以下操作,将 isRegistered
字段添加到 User
集合中的所有文档。像这样:
var conditions = {},
update = { isRegistered: true },
options = { multi: true };
UserSchema.update(conditions, update, options, callback);
function callback (err, numAffected) {
// numAffected is the number of updated documents
});
您无需等到部署新应用程序。然后,在 部署后,您将 isRegistered
字段设置为 true 您可以 运行 命令更新所有没有的文档该字段集。
db.collection.update({
isRegistered: { $exists: false }
}, {
isRegistered: true
}, {
multi: true
})
我有一个用于生产的 UserModel。我想添加一个布尔属性 (isRegistered)。对于已经在我的平台上的人,我希望这个新属性是真实的。对于新用户,我希望它默认为false。
如何将 default: false
放入我的猫鼬模型中,但对已经在这里的人来说是正确的?
谢谢!
我建议:
- 1) 将
default: false
添加到您的 Mongoose 模型中的isRegistred
属性 - 2) 运行 查询更新
isRegistered
到true
每个在特定日期和时间之前在您的平台上注册的人(例如,您部署更新模型投入生产)
这样,您所有的老用户都将被标记为已注册,而未来的用户则不会。我假设您或 MongoDB 正在跟踪某人注册的日期。
你的模式应该是这样的:
var UserSchema = new Schema({
name: String,
isRegistered: { type: boolean, default: false }
});
因此,默认情况下,所有用户的 isRegistered
字段都将是 false
并且已经插入到您的 User
集合中的文档不会有字段 isRegistered
。因此,您可以更新集合中的所有文档以包含该字段。
因此您可以执行以下操作,将 isRegistered
字段添加到 User
集合中的所有文档。像这样:
var conditions = {},
update = { isRegistered: true },
options = { multi: true };
UserSchema.update(conditions, update, options, callback);
function callback (err, numAffected) {
// numAffected is the number of updated documents
});
您无需等到部署新应用程序。然后,在 部署后,您将 isRegistered
字段设置为 true 您可以 运行 命令更新所有没有的文档该字段集。
db.collection.update({
isRegistered: { $exists: false }
}, {
isRegistered: true
}, {
multi: true
})