MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

गोलंग संरचना में ओमेम्प्टी ध्वज के साथ मोंगोडब फ़ील्ड को कैसे अपडेट करें

bool . का मान प्रकार के 2 संभावित मान हैं:false और true . और आप 3 अलग-अलग राज्यों को bool . के साथ "संचार" करना चाहते हैं फ़ील्ड, अर्थात् फ़ील्ड को अपडेट नहीं करने के लिए, फ़ील्ड को false . पर सेट करने के लिए और फ़ील्ड को true . पर सेट करने के लिए . यह स्पष्ट रूप से संभव नहीं है।

वही बात int . के लिए जाती है मान:0 . का मान 2 अलग-अलग विकल्पों का प्रतिनिधित्व नहीं कर सकता, अर्थात् फ़ील्ड को अपडेट नहीं करना और इसे 0 . पर सेट करना ।

अगर आप omitempty रखना चाहते हैं टैग मानों में विकल्प, फिर इसे काम करने के लिए, आपको फ़ील्ड को पॉइंटर्स में बदलना होगा:

type Coupon struct {
    Id               *int    `json:"id,omitempty" bson:"_id,omitempty"`
    Name             string `json:"name,omitempty" bson:"name,omitempty"`
    Code             string `json:"code,omitempty" bson:"code,omitempty"`
    Description      string `json:"description,omitempty" bson:"description,omitempty"`
    Status           *bool   `json:"status" bson:"status"`
    MaxUsageLimit    *int    `json:"max_usage_limit,omitempty" bson:"max_usage_limit,omitempty"`
    SingleUsePerUser *bool   `json:"single_use_per_user,omitempty" bson:"single_use_per_user,omitempty"`
}

जिस तरह से यह काम करता है वह यह है कि यदि सूचक nil . है , इसे छोड़ दिया जाएगा (यह "omitempty" . है विकल्प)। यदि फ़ील्ड एक गैर-nil है पॉइंटर, इसे पॉइंटेड वैल्यू पर अपडेट किया जाएगा।

तो उदाहरण के लिए यदि आप एक bool . को बाहर करना चाहते हैं फ़ील्ड, फिर *bool मान nil होना चाहिए/होना चाहिए . अगर आप इसे false . पर सेट/अपडेट करना चाहते हैं तो , यह एक false . का सूचक होना चाहिए मूल्य। अगर आप इसे true . पर सेट/अपडेट करना चाहते हैं तो , यह एक true . का सूचक होना चाहिए मूल्य।

सामान्य तौर पर, कोई भी प्रकार जिसका शून्य मान है संभव है और इसके साथ गिना जाना चाहिए, आप केवल "यह शून्य मान है" और "यह इनपुट से गायब है" को संभाल सकते हैं यदि आप इसे एक सूचक बनाते हैं, और nil सूचक का मान "इनपुट से गायब" मामले को इंगित करेगा, जबकि एक गैर-nil शून्य मान का सूचक "यह शून्य मान है" मामले को दर्शाता है। तो उपरोक्त उदाहरण में यदि string फ़ील्ड खाली स्ट्रिंग मान भी ले सकते हैं ("" ), तो आपको उन्हें पॉइंटर्स भी बनाने होंगे।

ध्यान दें कि आप इसे कस्टम मार्शलिंग और अनमर्शलिंग लॉजिक का उपयोग करके भी प्राप्त कर सकते हैं, लेकिन यह अधिक बोझिल है, और पॉइंटर्स का उपयोग करने से आपको यह स्वचालित रूप से मिल जाता है।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. ब्लूबर्ड और टाइपस्क्रिप्ट के साथ नेवला वादा

  2. MongoError, त्रुटि:E11000 डुप्लिकेट कुंजी त्रुटि

  3. एकाधिक $ जहां MongoDB में प्रश्न

  4. शर्त के साथ उप दस्तावेज़ खोजने के लिए मोंगो क्वेरी कैसे लिखें

  5. मैं एक MongoDB उपयोगकर्ता का पासवर्ड कैसे बदलूं?