Sto usando la Mongoose
versione 3 con la MongoDB
versione 2.2. Ho notato che un __v
campo ha iniziato a comparire nei miei MongoDB
documenti. Ha a che fare con il controllo delle versioni? Come si usa
Sto usando la Mongoose
versione 3 con la MongoDB
versione 2.2. Ho notato che un __v
campo ha iniziato a comparire nei miei MongoDB
documenti. Ha a che fare con il controllo delle versioni? Come si usa
Risposte:
Da qui :
Il
versionKey
è una struttura impostata su ogni documento quando prima creato da Mongoose. Questo valore di chiavi contiene la revisione interna del documento. Il nome di questa proprietà del documento è configurabile. L'impostazione predefinita è__v
.Se questo è in conflitto con l'applicazione, è possibile configurare come tale:
new Schema({..}, { versionKey: '_somethingElse' })
__v === 0
)?
query.select('-__v')
. @ExplosionPills avresti bisogno di aggiungere middleware mangusta come schema.pre('save', function (next) { this.increment(); next(); })
.
Beh, non riesco a vedere la soluzione di Tony ... quindi devo gestirla da solo ...
Se non hai bisogno di version_key, puoi semplicemente:
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
});
L'impostazione di versionKey su false significa che il documento non è più aggiornato.
Ciò è problematico se il documento contiene una matrice di documenti secondari. Uno dei documenti secondari potrebbe essere eliminato, riducendo le dimensioni dell'array. Successivamente, un'altra operazione potrebbe accedere al documento secondario nella matrice nella posizione originale.
Poiché l'array è ora più piccolo, potrebbe accedere accidentalmente al documento secondario errato nell'array.
VersionKey risolve questo problema associando il documento a a versionKey, utilizzato internamente da mongoose per assicurarsi che acceda alla giusta versione della raccolta.
Ulteriori informazioni sono disponibili all'indirizzo: http://aaronheckmann.blogspot.com/2012/06/mongoose-v3-part-1-versioning.html
resultFromMongo.toObject({ versionKey: false })
per sovrascrivere il valore.
schema.set('versionKey', false);
Possiamo usare versionKey: false nella definizione dello schema
'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();
});
}
}