Node.js 新的mongoose布尔属性,everyone为true,默认为false
我有一个用户模型,用于生产。我想添加一个布尔属性(isRegistered)。对于已经在我的平台上的人,我希望这个新属性是真实的。对于新用户,我希望它默认为false 我怎样才能将Node.js 新的mongoose布尔属性,everyone为true,默认为false,node.js,mongodb,mongoose,database-schema,Node.js,Mongodb,Mongoose,Database Schema,我有一个用户模型,用于生产。我想添加一个布尔属性(isRegistered)。对于已经在我的平台上的人,我希望这个新属性是真实的。对于新用户,我希望它默认为false 我怎样才能将default:false添加到我的猫鼬模型中,但对于已经在这里的人来说却是true 谢谢 我建议: 1) 将default:false添加到Mongoose模型中的isRegistred属性中 2) 为在特定日期和时间(例如,您将更新后的模型部署到生产中的那一刻)之前在您的平台上注册的每个人运行一个查询,将isRe
default:false
添加到我的猫鼬模型中,但对于已经在这里的人来说却是true
谢谢 我建议:
- 1) 将
添加到Mongoose模型中的default:false
属性中isRegistred
- 2) 为在特定日期和时间(例如,您将更新后的模型部署到生产中的那一刻)之前在您的平台上注册的每个人运行一个查询,将
更新为isRegistered
true
这样,所有旧用户都将被标记为已注册,而未来的用户则不会。我假设您或MongoDB正在跟踪某人的注册日期。您的模式如下:
var UserSchema = new Schema({
name: String,
isRegistered: { type: boolean, default: false }
});
因此,默认情况下,所有用户的isRegistered
字段都将false
并且已经插入到用户
集合中的文档将不会注册字段
。因此,您可以更新集合中的所有文档以包含该字段
因此,您可以执行以下操作,将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
})
首先通过添加新属性更新mongodb中的集合,然后使用新模型更新应用程序;)谢谢$你在这里玩把戏。它将检查该值是否仅来自默认值或已设置。我添加了一个在搜索解决方案时发现的东西:如果设置默认值,所有创建的文档都将在MongoDb中具有该值,而不仅仅是通过Mongoose