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

Upsert के साथ अपडेट को सही के रूप में उपयोग करते समय डिफ़ॉल्ट मान सेट नहीं है

अपने दस्तावेज़ में डिफ़ॉल्ट जोड़ने के लिए यदि इसे findOneAndUpdate . के साथ बनाया गया था (यह क्वेरी से पहले मौजूद नहीं था) और आपने उस अपडेट में फ़ील्ड प्रदान नहीं किया है जिसका आपको उपयोग करना चाहिए setDefaultsOnInsert

जब upsert और setDefaultsOnInsert दोनों true हैं , यदि रिकॉर्ड नहीं मिलता है और एक नया बनाया जाता है, तो डिफ़ॉल्ट सेट हो जाएंगे। यह यह जांचने के वर्कफ़्लो को छोड़ देता है कि रिकॉर्ड मौजूद है या नहीं और यदि नहीं तो 'सहेजें' के साथ एक नया बनाना केवल यह सुनिश्चित करने के लिए कि डिफ़ॉल्ट सेट हैं ।

मेरे पास एक ही समस्या है (findOneAndUpdate के साथ बनाया गया रिकॉर्ड upsert: true ) और किसी फ़ील्ड के लिए डिफ़ॉल्ट मान रिकॉर्ड में नहीं जोड़ा गया था, भले ही वह स्कीमा में था। यह केवल findOneAndUpdate का उपयोग करते समय डिफ़ॉल्ट जोड़ने के संबंध में है दस्तावेज़ बनाने के लिए, 'बनाए गए' फ़ील्ड के अपडेट को छोड़ने के लिए नहीं।

उदा.

User.findOneAndUpdate({email: user.email}, user, {upsert: true, setDefaultsOnInsert:true}, ...)


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. JasperReport लाइब्रेरी और MongoDB के साथ PDF जेनरेट करें

  2. 3 स्तरों के साथ MongoDB नेस्टेड लुकअप

  3. Node.js और MongoDB के साथ URL शॉर्टनर कैसे बनाएं?

  4. कैसे जांचें कि कोई दस्तावेज़ मोंगोडीबी में अपडेट या डाला गया है या नहीं?

  5. त्रुटि:मेजबान पहचानकर्ता में डबल कोलन