मैं संस्करण 2.2 के Mongoose
साथ MongoDB
संस्करण 3 का उपयोग कर रहा हूं । मैंने देखा है कि __v
मेरे MongoDB
दस्तावेजों में एक क्षेत्र दिखाई देने लगा है । यह संस्करण के साथ कुछ करना है? इसका उपयोग कैसे किया जा सकता है?
मैं संस्करण 2.2 के Mongoose
साथ MongoDB
संस्करण 3 का उपयोग कर रहा हूं । मैंने देखा है कि __v
मेरे MongoDB
दस्तावेजों में एक क्षेत्र दिखाई देने लगा है । यह संस्करण के साथ कुछ करना है? इसका उपयोग कैसे किया जा सकता है?
जवाबों:
से यहाँ :
versionKey
एक संपत्ति प्रत्येक दस्तावेज़ पर सेट जब पहली नेवला द्वारा बनाई गई है। इस कुंजी मान में दस्तावेज़ का आंतरिक संशोधन होता है। इस दस्तावेज़ की संपत्ति का नाम विन्यास योग्य है। डिफ़ॉल्ट है__v
।यदि यह आपके आवेदन से टकराता है तो आप इस तरह से कॉन्फ़िगर कर सकते हैं:
new Schema({..}, { versionKey: '_somethingElse' })
__v === 0
)?
query.select('-__v')
। @ExplosionPills की तरह आपको mongoose मिडलवेयर को जोड़ना होगा schema.pre('save', function (next) { this.increment(); next(); })
।
ठीक है, मैं टोनी का समाधान नहीं देख सकता ... इसलिए मुझे इसे स्वयं संभालना होगा ...
यदि आपको 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 को गलत पर सेट करने का अर्थ है कि दस्तावेज़ अब संस्करणित नहीं है।
यह समस्याग्रस्त है यदि दस्तावेज़ में सबडैक्शंस का एक सरणी है। सबडैक्शंस में से एक को हटाया जा सकता है, जिससे सरणी का आकार कम हो जाता है। बाद में, एक अन्य ऑपरेशन यह मूल स्थिति में सरणी में उप-सांचा तक पहुंच सकता है।
चूंकि सरणी अब छोटा है, इसलिए यह गलती से सरणी में गलत सबडिमेंक्शंस तक पहुंच सकता है।
VersionKey इस दस्तावेज़ को एक versionKey के साथ जोड़कर हल करता है, mongoose द्वारा आंतरिक रूप से उपयोग किया जाता है ताकि यह सुनिश्चित हो सके कि यह सही संग्रह संस्करण का उपयोग करता है।
अधिक जानकारी के लिए यहां पाया जा सकता है: http://aaronheckmann.blogspot.com/2012/06/mongoose-v3-part-1-versioning.html
resultFromMongo.toObject({ versionKey: false })
मूल्य को कम करने के लिए आप कॉल भी कर सकते हैं ।
schema.set('versionKey', false);
हम VersionKey का उपयोग कर सकते हैं : स्कीमा परिभाषा में गलत
'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();
});
}
}