एक सरल मोंगो दस्तावेज़ संरचना को ध्यान में रखते ही सेट:MongoDB: upserting: मूल्य अगर दस्तावेज़ डाला जा रहा है
{_ id, फ़र्स्टटाइम, lastTime}
ग्राहक एक ज्ञात आईडी के साथ एक दस्तावेज़ सम्मिलित करना होता है, या एक मौजूदा दस्तावेज़ अद्यतन करें। 'आखिरी समय' हमेशा कुछ नवीनतम समय पर सेट किया जाना चाहिए। 'फर्स्टटाइम' के लिए, यदि कोई दस्तावेज़ डाला जा रहा है, तो 'firstTime' को वर्तमान समय पर सेट किया जाना चाहिए। हालांकि, अगर दस्तावेज़ पहले ही बनाया गया है, तो 'फर्स्टटाइम' अपरिवर्तित बनी हुई है। मैं इसे पूरी तरह से अप्सर्ट (लुकअप से बचने के लिए) करना चाहता हूं।
मैंने http://www.mongodb.org/display/DOCS/Updating को क्रॉल किया है, लेकिन मुझे नहीं लगता कि यह विशेष ऑपरेशन कैसे किया जा सकता है।
मुझे विश्वास नहीं है कि यह कुछ अनुचित है, $ पुश और $ addToSet ऑपरेशंस हैं जो प्रभावी रूप से सरणी फ़ील्ड पर ऐसा करते हैं, बस कुछ भी नहीं जो साधारण फ़ील्ड पर समान होता है। ऐसा लगता है कि $ setIf ऑपरेशन की तरह कुछ होना चाहिए।
* यदि दस्तावेज़ पहले ही बनाया गया है, तो फ़ील्ड अपरिवर्तित बनी रहती है * इसे अपरर्ट नहीं कहा जाता है (जैसा कि आपके शीर्षक में है) –
@ ओम-नाम-नाम मैंने सबसे सरल मामला रेखांकित किया है, मैंने अपडेट किया है विवरण, इसलिए एक ऐसा क्षेत्र है जिसे हमेशा अद्यतन किया जा रहा है। –
ऐसा लगता है कि इस सुविधा को 2.4 के लिए लक्षित किया गया है: https://jira.mongodb.org/browse/SERVER-340 – JohnnyHK