मैं सी # ड्राइवर के साथ एक (टाइप किया गया) MongoDB संग्रह में एक पंक्ति को अपडेट करने का प्रयास कर रहा हूं। जब प्रकार MongoCollection<User>
के उस विशेष संग्रह के डेटा को संभालने, मैं संग्रह (नमक, पासवर्ड हैश, आदि)MongoDB: केवल विशिष्ट फ़ील्ड अपडेट करें
से संवेदनशील डेटा पुन: प्राप्त अब मैं एक User
उदाहरण अद्यतन करने के लिए कोशिश कर रहा हूँ से बचने के लिए करते हैं। हालांकि, मैंने वास्तव में पहले स्थान पर संवेदनशील डेटा को कभी भी पुनर्प्राप्त नहीं किया है, इसलिए मुझे लगता है कि संशोधनों को लागू करने और संग्रह में नया डेटा सबमिट करने से पहले यह डेटा पुनर्प्राप्त मॉडल उदाहरण (जहां तक मैं बता सकता हूं) में default(byte[])
होगा।
शायद मैं मोंगोडीबी सी # चालक में कुछ तुच्छ देख रहा हूं, मैं MongoCollection<T>.Save(T item)
का उपयोग User.PasswordHash
या User.PasswordSalt
जैसे विशिष्ट गुणों को अपडेट किए बिना कैसे कर सकता हूं? क्या मुझे पहले पूर्ण रिकॉर्ड पुनर्प्राप्त करना चाहिए, वहां "सुरक्षित" गुण अपडेट करें, और इसे वापस लिखें? या क्या अपडेट से कुछ फ़ील्ड को बाहर करने के लिए कोई फैंसी विकल्प है?
अग्रिम धन्यवाद
उनका कहना है कि बाहर के लिए धन्यवाद। लेकिन मेरी अंतर्निहित समस्या अभी भी मौजूद है: मैं अपने टाइप किए गए 'मोंगोकोलेक्शन' से सभी गुणों को अपडेट करना चाहता हूं, जो कि फ़ील्ड के विशिष्ट ज्ञात सेट को छोड़कर 'टी' के उदाहरण के मानों के साथ हैं। ' अपडेट करें। सब कुछ से (कुछ ऑब्जेक्ट)। Xxcept (x => x.ExceptThis)। Xxcept (x => x.ExceptThat)' –
Manny
यह एक कस्टम नौकरी है जिसे आपको लिखने की आवश्यकता होगी (सब कुछ से ..) । BsonMemberMap चलकर और सभी मैप किए गए सदस्यों को प्राप्त करके, क्लाइंट पक्ष पर करना बहुत कठिन नहीं है, फिर यदि आप जानते हैं कि मान बदल गया है तो केवल प्रत्येक से एक अपडेट.Set() बना रहा है। यह गारंटीकृत नहीं है क्योंकि डीबी शायद बदल सकता है क्योंकि आप स्मृति में रिकॉर्ड पढ़ते हैं। –