버전 2.2 Mongoose
와 함께 MongoDB
버전 3을 사용하고 있습니다. 나는 나타났습니다 __v
내에서 나타나기 시작했다 필드 MongoDB
문서를. 버전 관리와 관련이 있습니까? 어떻게 사용 되나요?
답변
에서 여기 :
는
versionKey
제 몽구스 의해 생성 될 때, 각 문서에 설정된 속성이다. 이 키 값에는 문서의 내부 개정이 포함됩니다. 이 문서 속성의 이름을 구성 할 수 있습니다. 기본값은__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로 설정하면 문서가 더 이상 버전 화되지 않습니다.
문서에 하위 문서 배열이 포함되어 있으면 문제가됩니다. 하위 문서 중 하나를 삭제하여 배열 크기를 줄일 수 있습니다. 나중에 다른 작업이 배열의 하위 문서를 원래 위치에 액세스 할 수 있습니다.
배열이 더 작으므로 실수로 배열의 잘못된 하위 문서에 액세스 할 수 있습니다.
versionKey는 문서를 올바른 컬렉션 버전에 액세스하기 위해 내부적으로 mongoose가 사용하는 versionKey와 연관 시켜서이를 해결합니다.
자세한 내용은 http://aaronheckmann.blogspot.com/2012/06/mongoose-v3-part-1-versioning.html을 참조하십시오.
답변
스키마 정의에서 versionKey : false 를 사용할 수 있습니다 .
'use strict';
const mongoose = require('mongoose');
export class Account extends mongoose.Schema {
constructor(manager) {
var trans = {
tran_date: Date,
particulars: String,
debit: Number,
credit: Number,
balance: Number
}
super({
account_number: Number,
account_name: String,
ifsc_code: String,
password: String,
currency: String,
balance: Number,
beneficiaries: Array,
transaction: [trans]
}, {
versionKey: false // set to false then it wont create in mongodb
});
this.pre('remove', function(next) {
manager
.getModel(BENEFICIARY_MODEL)
.remove({
_id: {
$in: this.beneficiaries
}
})
.exec();
next();
});
}
}