Saya menggunakan Mongoose
versi 3 dengan MongoDB
versi 2.2. Saya perhatikan ada __v
bidang yang mulai muncul di MongoDB
dokumen saya . Apakah ada hubungannya dengan versi? Bagaimana ini digunakan?
Saya menggunakan Mongoose
versi 3 dengan MongoDB
versi 2.2. Saya perhatikan ada __v
bidang yang mulai muncul di MongoDB
dokumen saya . Apakah ada hubungannya dengan versi? Bagaimana ini digunakan?
Jawaban:
Dari sini :
Ini
versionKey
adalah properti yang ditetapkan pada setiap dokumen saat pertama kali dibuat oleh Mongoose. Nilai kunci ini berisi revisi internal dokumen. Nama properti dokumen ini dapat dikonfigurasi. Standarnya adalah__v
.Jika ini bertentangan dengan aplikasi Anda, Anda dapat mengonfigurasi seperti:
new Schema({..}, { versionKey: '_somethingElse' })
__v === 0
)?
query.select('-__v')
. @ExplosionPills Anda akan perlu menambahkan middleware luwak suka schema.pre('save', function (next) { this.increment(); next(); })
.
Yah, saya tidak bisa melihat solusi Tony ... jadi saya harus menanganinya sendiri ...
Jika Anda tidak memerlukan version_key, Anda bisa:
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
});
Mengatur versionKey ke false berarti dokumen tidak lagi diversi.
Ini bermasalah jika dokumen berisi larik sub dokumen. Salah satu sub dokumen dapat dihapus, mengurangi ukuran array. Kemudian, operasi lain dapat mengakses sub dokumen dalam array di posisi semula.
Karena array sekarang lebih kecil, mungkin secara tidak sengaja mengakses subdocument yang salah dalam array.
VersionKey memecahkan ini dengan mengaitkan dokumen dengan versionKey, yang digunakan oleh luwak secara internal untuk memastikan itu mengakses versi koleksi yang tepat.
Informasi lebih lanjut dapat ditemukan di: http://aaronheckmann.blogspot.com/2012/06/mongoose-v3-part-1-versioning.html
resultFromMongo.toObject({ versionKey: false })
, untuk mengesampingkan nilainya.
schema.set('versionKey', false);
Kita dapat menggunakan versionKey: false dalam definisi Skema
'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();
});
}
}