私は生産で使用されているUserModelを持っています。ブール値属性(isRegistered)を追加したいと思います。私のプラットフォームに既にいる人にとっては、この新しい属性を真にしたいと思っています。新規ユーザーの場合は、デフォルトではfalseにします。新しいmongooseブール属性。誰でもtrue、デフォルトはfalseです。
私はマングースモデルにdefault: false
を入れることができますが、すでにここにいる人にも当てはまりますか?
ありがとうございます!
私は生産で使用されているUserModelを持っています。ブール値属性(isRegistered)を追加したいと思います。私のプラットフォームに既にいる人にとっては、この新しい属性を真にしたいと思っています。新規ユーザーの場合は、デフォルトではfalseにします。新しいmongooseブール属性。誰でもtrue、デフォルトはfalseです。
私はマングースモデルにdefault: false
を入れることができますが、すでにここにいる人にも当てはまりますか?
ありがとうございます!
新しいアプリケーションを導入するまで待つ必要はありません。次にの配備後にisRegistered
フィールドをtrueに設定すると、そのフィールドセットを持たないすべてのドキュメントを更新するコマンドを実行できます。
db.collection.update({
isRegistered: { $exists: false }
}, {
isRegistered: true
}, {
multi: true
})
ありがとうございます! $は存在しています。値がデフォルトからのものか、すでに設定されているものかをチェックします。 解決策を探している間に発見したことを追加します:デフォルト値を設定すると、作成されたすべてのドキュメントはMongoDbでこの値を持ちます。 – JosselinTD
私がお勧めします:
true
にisRegistered
を更新するために、クエリを実行し、あなたのマングースモデルisRegistred
属性にdefault: false
を追加します特定の日時(たとえば、更新されたモデルを本番環境に配備した瞬間)このようにして、すべての古いユーザーは既にレジスとしてマークされます将来のものはそうしないのですが。私は、あなたまたはMongoDBが、登録された人物の日付を記録していると仮定しています。あなたのスキーマがこのようなものになるだろう
:このため
var UserSchema = new Schema({
name: String,
isRegistered: { type: boolean, default: false }
});
、デフォルトでは、すべてのユーザーがfalse
、すでにあなたに挿入された文書であることをisRegistered
フィールドを持っています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
});
新しい属性を追加してmongodbでコレクションを更新してから、新しいモデルでアプリケーションを更新してください) –