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

दस्तावेज़ फ़ील्ड नाम '$' से शुरू नहीं हो सकते (खराब कुंजी:'$set')

आपके पास { "orgId" : 2 } . नहीं होना चाहिए अद्यतन दस्तावेज़ में।

इस लाइन को कोड से हटा दें और इसे ठीक काम करना चाहिए।

u.append("orgId", orgId);

आपके द्वारा त्रुटि को ट्रिगर करने का कारण यह था कि किसी दस्तावेज़ के लिए अद्यतन निर्दिष्ट करने के दो तरीके हैं और आपने दोनों की एक क्रॉस ब्रेड बनाई है। विकल्प हैं:

  1. अपडेट के लिए पूरा दस्तावेज उपलब्ध कराएं। इस मॉडल के लिए मौजूदा दस्तावेज़ को प्रदान किए गए दस्तावेज़ द्वारा अधिलेखित कर दिया जाता है।
  2. संग्रह में मौजूदा दस्तावेज़ को संशोधित करने के लिए अद्यतन ऑपरेटरों का उपयोग करता है।

यदि आप दूसरे संस्करण का उपयोग करते हैं तो अद्यतन दस्तावेज़ में सभी "शीर्ष स्तरीय कुंजियाँ" एक $ से प्रारंभ होंगी . यदि आप पहले विकल्प का उपयोग करते हैं तो शीर्ष स्तर की कोई भी कुंजी $ . से शुरू नहीं होगी . कोड ने पहले फ़ील्ड को देखा, सोचा कि यह एक प्रतिस्थापन दस्तावेज़ था और फिर विफल हो गया जब उसने शेष दस्तावेज़ को मान्य करने का प्रयास किया क्योंकि दस्तावेज़ों में चाबियाँ $ से शुरू नहीं हो सकतीं (ऐसा न हो कि अपडेट या क्वेरी दस्तावेज़ों के साथ भ्रमित हों)।

संपादित करें:

अप्सर्ट के मामले में (उदाहरण के लिए, दस्तावेज़ पहले से मौजूद नहीं है और आप अप्सर्ट को अनुमति देने के लिए अपडेट को फ़्लैग करते हैं) क्वेरी के सटीक मिलान ऑपरेटरों का उपयोग दस्तावेज़ को सीड करने के लिए किया जाता है। उपरोक्त उदाहरण के लिए हमें { "orgId" : 2 } . का बीज दस्तावेज़ मिलता है . सर्वर तब अद्यतन ऑपरेटरों को लागू करेगा और परिणाम को सहेज लेगा।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. उप-दस्तावेजों के आधार पर मोंगोडब क्वेरी परिणामों को कैसे क्रमबद्ध करें

  2. MongoDB $ लुकअप पाइपलाइन मैच _id द्वारा काम नहीं कर रहा है

  3. मैं mongodb में _id द्वारा रिकॉर्ड क्यों नहीं ढूंढ पा रहा हूं?

  4. मोंगोस का उपयोग करके मोंगोडीबी में कई रिकॉर्ड अपडेट करने का सही तरीका क्या है

  5. mongodb - जांचें कि क्या फ़ील्ड कई मानों में से एक है