私はこのようなスキーマを持っている:mongooseメソッドでfieldNameを変更する方法+スキーマでfieldNameを変更する方法はありますか?
const StorySchema = new Schema({
authorId: String,
title: String,
longUrl: String,
shortUrl: String,
comment: String,
category: String,
author: String,
date: { type: Date, default: Date.now, index: true },
votes: { type: Number, default: 1, index: true },
});
私はvotesCount呼ばれるスキーマに、私は実際にスキーマを変更すると同時に、票のフィールドを変更します。
私は同じファイルでこれらを行うだけですか?
const StorySchema = new Schema({
authorId: String,
title: String,
longUrl: String,
shortUrl: String,
comment: String,
category: String,
author: String,
date: { type: Date, default: Date.now, index: true },
votesCount: { type: Number, default: 1, index: true },
});
const StoryModel = mongoose.model('story', StorySchema);
StoryModel.update({}, { $rename: { votes: 'votesCount' } }, { multi: true, strict: false }, function(err, blocks) { });
またはコード内でこれをまったく実行しないでください。私は決してデータベーススキーマの変更を扱っていないので、スキーマの変更を適用する方法と場所はわかりません。
の名前を変更$使用してフィールド名を置き換えるよりも、生産で実行されているプロジェクトは、あなたの新しいコントローラを更新する場合は交換をお勧めします。実行時にモデルのスキーマを変更するには、現在のモデルの登録を解除して、新しいスキーマの変更で再度登録する必要があります。あなたがやっていることが「プロダクションに変更を配備する」のであれば、プログラムのアクセスを一時的に停止し、実際のデータを更新してから、変更したコードで再起動してください。 –