新的mongoose布尔属性,每个人都是true,默认是false
我有一个UserModel,用于生产。 我想添加一个布尔属性(isRegistered)。 对于已经在我的平台上的用户,我希望这个新属性是真实的。 对于新用户,我希望它默认为false。
我怎么能把default: false
的我的mongoose模型,但对这里已经有人呢?
谢谢 !
您需要等到您部署新的应用程序。 然后, 在部署之后,您将isRegistered
字段设置为true,您可以运行该命令来更新所有没有设置该字段的文档。
db.collection.update({ isRegistered: { $exists: false } }, { isRegistered: true }, { multi: true })
我会build议:
- 1)在你的Mongoose模型中添加一个
default: false
到你的isRegistred
属性 - 2)在特定的date和时间之前,运行查询以更新
isRegistered
为true
的每个在您的平台上注册的人员(例如,将您的更新模型部署到生产中的那一刻)
这样,所有的旧用户将被标记为已经注册,而未来的用户则不会。 我假设你或MongoDB正在跟踪注册人的date。
你的模式是这样的:
var UserSchema = new Schema({ name: String, isRegistered: { type: boolean, default: false } });
由于这个原因,默认情况下,所有的用户都有isRegistered
字段为false
而已经插入到你的User
集合的文件将不会有字段isRegistered
。 因此,您可以更新collections中的所有文档以包含该字段。
因此,您可以执行以下操作将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 });