MongoDB 2.4 से शुरू होकर, अब परमाणु findOrCreate
के लिए एक अद्वितीय अनुक्रमणिका (या किसी अन्य समाधान) पर भरोसा करना आवश्यक नहीं है। संचालन की तरह।
यह $setOnInsert
. के लिए धन्यवाद है 2.4 के लिए नया ऑपरेटर, जो आपको उन अपडेट को निर्दिष्ट करने की अनुमति देता है जो केवल दस्तावेज़ डालते समय ही होने चाहिए।
यह, upsert
. के साथ संयुक्त है विकल्प, इसका मतलब है कि आप findAndModify
. का उपयोग कर सकते हैं एक परमाणु प्राप्त करने के लिए findOrCreate
-जैसा ऑपरेशन।
db.collection.findAndModify({
query: { _id: "some potentially existing id" },
update: {
$setOnInsert: { foo: "bar" }
},
new: true, // return new doc if one is upserted
upsert: true // insert the document if it does not exist
})
$setOnInsert
. के रूप में केवल सम्मिलित किए जा रहे दस्तावेज़ों को प्रभावित करता है, यदि कोई मौजूदा दस्तावेज़ पाया जाता है, तो कोई संशोधन नहीं होगा। यदि कोई दस्तावेज़ मौजूद नहीं है, तो यह निर्दिष्ट _id के साथ एक को ऊपर उठाएगा, फिर केवल सम्मिलित करें सेट करें। दोनों ही मामलों में, दस्तावेज़ वापस कर दिया जाता है।