Что такое поле "__v" в Mongoose?

Я использую Mongoose версию 3 с MongoDB версией 2.2. Я заметил, что в моих MongoDB документах появилось поле __v. Это как-то связано с версированием? Как он используется?

Ответ 1

Из здесь:

versionKey - это набор свойств для каждого документа при первом создании by Mongoose. Значение этого ключа содержит внутреннюю ревизию документ. Имя этого свойства документа настраивается. по умолчанию - __v.

Если это противоречит вашему приложению, вы можете настроить как таковой:

new Schema({..}, { versionKey: '_somethingElse' })

Ответ 2

Ну, я не вижу решения Тони... так что я должен сам справиться...


Если вам не нужна версия_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
});

Ответ 3

Мы можем использовать 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();
        });
    }

}