मेरे पास एक मोंगो डेटाबेस में एक संग्रह है जो मैं कुछ लॉगिंग-प्रकार की जानकारी जोड़ता हूं। मैं एक उल्का ऐप में "पूंछ-एफ" की सबसे कुशल/सरल विधि को समझने की कोशिश कर रहा हूं - क्योंकि संग्रह में एक नया दस्तावेज़ जोड़ा गया है, इसे क्लाइंट को भेजा जाना चाहिए, जो इसे अंत में जोड़ना चाहिए संग्रह में दस्तावेजों के वर्तमान सेट का।उल्का के माध्यम से मोंगो में 'tail -f' का एक बड़ा संग्रह कैसे सर्वोत्तम है?
क्लाइंट को भेजने के लिए नहीं भेजा जाएगा और न ही संग्रह में सभी दस्तावेज रखेगा, संभवतः आखिरी ~ 100 या उससे भी ज्यादा।
अब, एक मोंगो परिप्रेक्ष्य से, मुझे "संग्रह में अंतिम एन दस्तावेज़" कहने का कोई तरीका नहीं दिख रहा है, जैसे कि हमें किसी भी प्रकार का आवेदन करने की आवश्यकता नहीं होगी। यह सबसे अच्छा विकल्प की तरह उपलब्ध लगता है प्राकृतिक तरह उतरते कर रहा है, तो एक सीमा कॉल, तो क्या यह 'पिछले 100 दस्तावेज' उल्का प्रकाशित करने के रास्ते AFAICT तो the mongo doc on $natural
db.collection.find().sort({ $natural: -1 })
में सूचीबद्ध है सर्वर साइड पर, की तरह कुछ संग्रह कुछ की तरह होगा:
Meteor.publish('logmessages', function() {
return LogMessages.find({}, { sort: { $natural: -1 }, limit: 100 });
});
अब, एक 'पूंछ -f' दृष्टिकोण से, इस सर्वर से 'पिछले 100 दस्तावेज' भेजने का सही प्रभाव हो रहा है, लेकिन गलत क्रम में ऐसा नहीं करता है (नवीनतम दस्तावेज अंत में बजाय उल्का संग्रह की शुरुआत में होगा)।
ग्राहक पक्ष पर, ऐसा लगता है कि संग्रह (दुर्भाग्य से) संग्रह को उलट करने की आवश्यकता है। अब, मुझे the Meteor Collection docs में एक रिवर्स() नहीं दिख रहा है और $ प्राकृतिक द्वारा सॉर्टिंग: 1 क्लाइंट पर काम नहीं करता है (जो उचित लगता है, क्योंकि कोई असली मोंगो संदर्भ नहीं है)। कुछ मामलों में, संदेशों में दस्तावेज़ों के भीतर टाइमस्टैम्प होंगे और ग्राहक 'प्राकृतिक आदेश' वापस पाने के लिए उसमें सॉर्ट कर सकते हैं, लेकिन ऐसा लगता है कि हैकी।
किसी भी मामले में, ऐसा लगता है कि मुझे लगता है कि मुझे एक बहुत ही आसान तरीका याद आ रहा है, जो 'संग्रह में सम्मिलित पिछले 100 दस्तावेज' संग्रह के माध्यम से मोंगो से प्रकाशित संग्रह है। :)
धन्यवाद!
संपादित - अगर मैं एक छाया हुआ संग्रह करने के लिए मोंगो में संग्रह बदलने की तरह लग रहा है, तो सर्वर create a tailable cursor कुशलता से (और जल्दी) संग्रह में जोड़ा नए दस्तावेज़ों की सूचना पाने के कर सकते हैं। हालांकि, यह मुझे स्पष्ट नहीं है कि सर्वर को मेटर संग्रह के माध्यम से ऐसा करने के लिए कैसे/कैसे प्राप्त किया जाए।
एक विकल्प जो थोड़ा कम कुशल लगता है लेकिन उसे एक कैप्ड संग्रह (AFAICT) में स्विच करने की आवश्यकता नहीं है, Smart Collections का उपयोग कर रहा है जो ओप्लॉग की पूंछ करता है, कम से कम यह मतदान के बजाए घटना-चालित होता है, और सभी परिचालनों के बाद से स्रोत संग्रह में आवेषण होंगे, ऐसा लगता है कि यह अभी भी बहुत कुशल होगा। दुर्भाग्यवश, AFAICT मुझे अभी भी सॉर्टिंग समस्याओं के साथ छोड़ दिया गया है क्योंकि मुझे नहीं लगता कि सर्वर साइड संग्रह को 'पिछले 100 दस्तावेज़ डालने' के रूप में परिभाषित करने के तरीके को कैसे परिभाषित किया जाए। :(
यदि मोंगो में किसी अन्य ("भौतिक दृश्य" प्रकार की क्वेरी के रूप में संग्रह बनाने का कोई तरीका है, तो हो सकता है कि मैं मोंगो में लॉग-एंड-100 "संग्रह दृश्य" बना सकूं, और तो उल्का सिर्फ पूरे छद्म संग्रह को प्रकाशित/सब्सक्राइब करने में सक्षम होगा?