2012-09-19 9 views
186

में "__v" फ़ील्ड क्या है I Mongoose संस्करण 3 का उपयोग MongoDB संस्करण 2.2 के साथ कर रहा हूं। मैंने देखा है कि __v फ़ील्ड मेरे MongoDB दस्तावेज़ों में दिखना शुरू हो गया है। क्या यह संस्करण के साथ कुछ करना है? इसका उपयोग कैसे किया जा सकता है?MongoDB

उत्तर

192

here से:

versionKey एक संपत्ति प्रत्येक दस्तावेज़ पर सेट जब पहली नेवला द्वारा बनाई गई है। इस कुंजी मान में दस्तावेज़ का आंतरिक संशोधन शामिल है। इस दस्तावेज़ संपत्ति का नाम विन्यास योग्य है। डिफ़ॉल्ट __v है।

यह आपके आवेदन का विरोध करता है, तो आप इस तरह के रूप में कॉन्फ़िगर कर सकते हैं:

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

इसे सुरक्षित इस प्रोप उपयोग करने के लिए है यह निर्धारित करने के लिए कि एक दस्तावेज़ अभी बनाया गया था (उदा। '__v === 0')? भविष्य के संदर्भ के लिए –

+18

@ExplosionPills: नहीं। संस्करण कुंजी केवल ऑपरेशन के बाद बढ़ी है जो एक संघर्ष का कारण बन सकती है, सरणी पदों को संशोधित कर सकती है। अन्य अपडेट इसे बढ़ाएंगे नहीं। मूल रिलीज पोस्ट इसे विस्तार से समझाता है: http://aaronheckmann.tumblr.com/post/48943525537/mongoose-v3-part-1-versioning –

+2

क्या प्रश्नों से लौटे दस्तावेज़ों से इसे छिपाने का कोई तरीका है? – diosney

33

ठीक है, मैं टोनी समाधान नहीं देख सकते हैं ... इसलिए मैं इसे अपने आप को संभालने के लिए है ...


आप 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 
}); 
+12

इसे गलत पर सेट करने का नतीजा क्या है? – xperator

+5

@ एक्सपेरेटर यहां देखें → http://mongoosejs.com/docs/guide.html#versionKey –

+0

आप मूल्य को सरप्रेस करने के लिए 'resultFromMongo.toObject ({versionKey: false})' भी कॉल कर सकते हैं। –