2012-09-10 11 views
8

मेरे पास mongodb में दस्तावेज़ों का संग्रह है, expireAfterSeconds संपत्ति दिनांक दिनांक प्रकार सूचकांक पर सेट है।एक mongodb दस्तावेज़ कब अपडेट हो जाने के बाद समाप्त हो जाएगा?

तर्क के लिए, दस्तावेज़ एक घंटे के बाद समाप्त होने के लिए सेट हैं।

जब मैं इस संग्रह में कोई दस्तावेज़ अपडेट करता हूं, तो निम्न में से कौन सा होगा?

क) दस्तावेज़ मूल निर्माण समय के बाद एक घंटे के समाप्त हो जाएगा।

बी) दस्तावेज़ अद्यतन समय के एक घंटे बाद समाप्त हो जाएगा।

ग) दस्तावेज़ अनुक्रमित चर के समय के बाद एक घंटे के समाप्त हो जाएगा, जो कुछ भी हो सकता है।

घ) ऊपर

में से कोई भी मुझे लगता है कि यह है, लेकिन संदर्भ यह पुष्टि करने के लिए नहीं मिल रहा। क्या मैं सही हूँ? यह दस्तावेज कहां है?

[संपादित करें]: स्पष्ट करने के लिए, स्थिति यह है कि मैं पासवर्ड रीसेट कोड के भंडारण कर रहा हूँ (। कि समय सीमा समाप्त हो जाना चाहिए) और मैं पुराने कोड यदि एक नया कोड अनुरोध किया जाता है काम करना बंद करना चाहते हैं। हालांकि यह बहुत प्रासंगिक नहीं है, क्योंकि मैं यह सुनिश्चित कर सकता हूं कि मैं जिस व्यवहार को चाहता हूं वह हमेशा पुराने लेनदेन को हटाकर सम्मानित किया जाता है। यह सवाल मेरी वर्तमान समस्या के बारे में नहीं है, लेकिन मोंगो के व्यवहार के बारे में है। क्योंकि इस तिथि क्षेत्र की सामग्री को हटाने के लिए प्रविष्टियों का चयन करने के लिए किया जाता है

+0

इस समय व्यवहार का परीक्षण कर रहा हूं। – brice

+1

निष्कासन संचालन की अवधि आपके मोंगोड इंस्टेंस के वर्कलोड पर निर्भर करती है, जो आप चल रहे हैं, क्या आप –

+1

स्थिति को विस्तारित कर सकते हैं अपडेट किए गए उत्तर को देखें। हालांकि मेरी वर्तमान स्थिति काफी अप्रासंगिक है। मुझे पता है कि हटाने में समय लगेगा और सटीक पल लोड पर निर्भर करेगा। – brice

उत्तर

15

सही जवाब, ग)

expireAfterSeconds संपत्ति हमेशा एक क्षेत्र है जो एक BSON दिनांक पर एक सूचकांक की आवश्यकता है।

जब आप समय-समय पर रीसेट करने के लिए किसी दस्तावेज़ का अद्यतन चाहते हैं, तो वर्तमान समय तक अनुक्रमित दिनांक फ़ील्ड को अपडेट करें।

जब आप टीटीएल को प्रभावित नहीं करते हैं, तो बस तारीख को अपडेट न करें।

हालांकि, ध्यान रखें कि समाप्त हो गया हैअंटर सेकेंड दस्तावेज़ की तत्काल हटाने की गारंटी नहीं देता है। विलोपन पृष्ठभूमि की नौकरी से किया जाता है जो हर मिनट चलता है। यह काम कम प्राथमिकता है और वर्तमान लोड उच्च होने पर मोंगोडीबी द्वारा स्थगित किया जा सकता है। इसलिए जब आपके उपयोग-मामले के लिए यह महत्वपूर्ण है कि समाप्ति समय को दूसरे के लिए सटीक रूप से सम्मानित किया जाता है, तो आपको आवेदन स्तर पर अतिरिक्त जांच जोड़नी चाहिए।

इस सुविधा को यहां से प्रलेखित है: http://docs.mongodb.org/manual/tutorial/expire-data/

+0

धन्यवाद फिलिप को हटा दिया जाता है। मैंने यही सोचा, मुझे इस पर दस्तावेज़ों को वास्तव में स्पष्ट नहीं मिला। – brice

+0

महान उत्तर - पूर्ण, संक्षेप में। – Ross

0

आप संग्रह समाप्त हो रही के लिए मोंगो दानव प्रक्रिया पर भरोसा नहीं करना चाहते हैं, तो बेहतर संग्रह पर एक अतिरिक्त createdOn क्षेत्र बना सकते हैं और करने के लिए वर्तमान टाइमस्टैम्प के साथ तुलना करना तय करें कि उस दस्तावेज़ का उपयोग करना है या नहीं।

+0

यह मोंगोडीबी कैसे काम करता है और बाहरी प्रसंस्करण की आवश्यकता है (जो मूल प्रश्न के दायरे से बाहर है) से असंबंधित है। –

संबंधित मुद्दे