Я використовую Mongoose
версію 3 з MongoDB
версією 2.2. Я помітив, що __v
поле почало з'являтися в моїх MongoDB
документах. Це щось стосується версій? Як він використовується?
Я використовую Mongoose
версію 3 з MongoDB
версією 2.2. Я помітив, що __v
поле почало з'являтися в моїх MongoDB
документах. Це щось стосується версій? Як він використовується?
Відповіді:
Від сюди :
Це
versionKey
властивість, встановлена у кожному документі при першому створенні Mongoose. Це значення ключів містить внутрішню редакцію документа. Ім'я цього властивості документа може бути налаштоване. Типовим є__v
.Якщо це суперечить вашій програмі, ви можете налаштувати його як таке:
new Schema({..}, { versionKey: '_somethingElse' })
__v === 0
)?
query.select('-__v')
. @ExplosionPills вам потрібно буде додати мангустне проміжне програмне забезпечення, як-от schema.pre('save', function (next) { this.increment(); next(); })
.
Ну, я не бачу рішення Тоні ... тож я повинен сам впоратися ...
Якщо версія_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
});
Якщо встановити falseKey на помилковому, документ більше не має версії.
Це проблематично, якщо документ містить масив піддокументів. Один із піддокументів можна видалити, зменшивши розмір масиву. Пізніше інша операція могла отримати доступ до піддокумента в масиві у вихідному положенні.
Оскільки масив зараз менший, він може випадково отримати доступ до неправильного піддокумента в масиві.
VersionKey вирішує це, пов'язуючи документ з версією VersionKey, яку внутрішній мангуст використовує для того, щоб переконатися, що він має доступ до потрібної версії колекції.
Більше інформації можна знайти на веб-сайті: http://aaronheckmann.blogspot.com/2012/06/mongoose-v3-part-1-versioning.html
resultFromMongo.toObject({ versionKey: false })
, щоб перевищити значення.
schema.set('versionKey', false);
Ми можемо використовувати 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();
});
}
}