バージョン2.2Mongoose
でバージョン3を使用しています。ドキュメントにフィールドが表示され始めているMongoDB
ことに気付きました。バージョン管理と関係がありますか?どのように使用されますか?__v
MongoDB
6 に答える
ここから:
は
versionKey
、Mongoose によって最初に作成されたときに各ドキュメントに設定されるプロパティです。このキー値には、ドキュメントの内部リビジョンが含まれています。このドキュメント プロパティの名前は構成可能です。デフォルトは です__v
。これがアプリケーションと競合する場合は、次のように構成できます。
new Schema({..}, { versionKey: '_somethingElse' })
トニーの解決策が見えないので、自分で処理する必要があります...
version_key が必要ない場合は、次のようにします。
var UserSchema = new mongoose.Schema({
nickname: String,
reg_time: {type: Date, default: Date.now}
}, {
versionKey: false // You should be aware of the outcome after set to false
});
versionKey を false に設定すると、ドキュメントはバージョン管理されなくなります。
ドキュメントにサブドキュメントの配列が含まれている場合、これは問題になります。サブドキュメントの 1 つが削除され、配列のサイズが縮小される可能性があります。後で、別の操作が配列内の元の位置にあるサブドキュメントにアクセスする可能性があります。
配列が小さくなるため、配列内の間違ったサブドキュメントに誤ってアクセスする可能性があります。
versionKey は、ドキュメントを versionKey に関連付けることでこれを解決します。これは、マングースが内部で使用して、正しいコレクション バージョンにアクセスできるようにします。
詳細については、http: //aaronheckmann.blogspot.com/2012/06/mongoose-v3-part-1-versioning.htmlを参照してください。
NestJS で削除するには、Schema()
デコレータにオプションを追加する必要があります
@Schema({ versionKey: false })
バージョン キーが必要ない場合は、無効にすることができます。
次の例を参照してください。
var User = new mongoose.Schema({
FullName:{
type :String,
},
BirthDay:{
type :String,
},
Address:{
type :String,
},
Gender:{
type:String,
},
PhoneNumber:{
type:Number,
ref:'Account'
},
AccountID:{
type: Schema.Types.ObjectId,
ref: 'Account'
},
UserName:{
type:String,
ref:'Account'
}
},{collection:'User',
versionKey: false //here
});