버전 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();
        });
    }
}
