का उपयोग करते समय mongodb में अप्सर्ट्स यदि यह मौजूद नहीं है तो मुझे दस्तावेज़ डालने की आवश्यकता है। मुझे पता है कि "अपरर्ट" विकल्प ऐसा कर सकता है, लेकिन मेरे पास कुछ विशेष ज़रूरत है।कस्टम _id मान
सबसे पहले मुझे केवल अपने _id फ़ील्ड के साथ दस्तावेज़ बनाने की आवश्यकता है, लेकिन केवल तभी यदि यह पहले से मौजूद नहीं है। मेरा _id फ़ील्ड मेरे द्वारा उत्पन्न एक संख्या है (ऑब्जेक्टआईडी नहीं)। अगर मैं फिर "Upsert" विकल्प का उपयोग मैं "मॉड _ id पर अनुमति नहीं"
db.mycollection.update({ _id: id }, { _id: id }, { upsert: true });
मुझे पता है कि हम एक $ सेट में _ id का उपयोग नहीं कर सकते हैं।
तो, मेरा सवाल यह है: यदि मोंगोड में परमाणु रूप से "बनाना अगर मौजूद नहीं है" का कोई तरीका है?
संपादित करें: @Barrie द्वारा प्रस्तावित के रूप में यह (NodeJS और नेवला का प्रयोग करके) काम करता है:
var newUser = new User({ _id: id });
newUser.save(function (err) {
if (err && err.code === 11000) {
console.log('If duplicate key the user already exists', newTwitterUser);
return;
}
console.log('New user or err', newTwitterUser);
});
लेकिन मैं अभी भी अगर यह यह करने के लिए सबसे अच्छा तरीका है आश्चर्य है।
'सेव' ऑपरेशन का उपयोग करने का प्रयास करें? i.e. db.collection.save ({"_ id": your_id}) –
सहेजें डुप्लिकेट कुंजी त्रुटि के साथ विफल रहता है यदि पहले से मौजूद है – aartiles