2013-02-26 24 views
9

मेरे पास नीचे दिखाए गए कुछ कोड हैं। मोंगो में मेरे कीवर्ड संग्रह में लगभग 60K प्रविष्टियां हैं। मैं वास्तव में शीर्ष 25 चाहता हूं, इसलिए मैं एक सीमा खोजने की कोशिश कर रहा हूं। मैं अपने परिणामों की संख्या मुद्रित करने के लिए एक ही प्रश्न चला रहा हूं। किसी कारण से, सीमित काम नहीं लगता है क्योंकि मेरा लॉग संदेश 60K या उससे भी कम कहता है।सर्वर पक्ष पर मौसम में मौसम की सीमा सीमित करें?

क्या इस तरह की चीज संभव नहीं है? मैं क्लाइंट पक्ष पर एक सीमा निर्धारित कर सकता हूं जो काम करता है, लेकिन मैंने सोचा कि मैं सर्वर पर चीजों को सीमित करने की कोशिश करूंगा ताकि कम डेटा भेजा जा सके।

में अतिरिक्त जानकारी के कुछ टुकड़े:

  • मैं अपने खुद के मोंगो डेटाबेस का उपयोग कर रहा हूँ, उल्का द्वारा प्रदान की एक नहीं; env चर
  • संस्करण 0.5.7

किसी भी मदद के साथ यह की ओर इशारा करते बहुत सराहना की जाएगी।

if (Meteor.isServer) { 
    Meteor.startup(function() { 
    console.log('server startup'); 

    Meteor.publish("keyword_hits", function() { 
     console.log('keywords: ' + Keywords.find({}, {sort: {count:-1}, limit:25}).count()); 
     return Keywords.find({}, {sort: {count:-1}, limit:25}); 
    }); 
}); 
+4

आह मुझे लगता है कि मैंने इसे पाया, मैं _id फ़ील्ड का उपयोग कर रहा था। मैंने डिफ़ॉल्ट रूप से उपयोग करने के लिए अपना कोड बदल दिया और सबकुछ अब काम करता प्रतीत होता है। उल्का का उपयोग करते समय मुझे अकेले _id छोड़ना याद रखना होगा। –

+6

हाय एरिक, क्या आप समाधान को जवाब के रूप में चिपकाने और प्रश्न को बंद करने पर ध्यान देंगे? या फिर भी आपको इसके साथ मदद की ज़रूरत है? – cmather

+0

एक बात मुझे नोटिस है कि आप अपने console.log कथन में सॉर्ट कर रहे हैं। अगर आप केवल गिनती कर रहे हैं तो सॉर्ट करने का कोई कारण नहीं है। –

उत्तर

16
मोंगो एपीआई कि उल्का के साथ आता है के साथ

, .count() विचार Limits पर ध्यान नहीं देता, या Skips तो क्या आप देख रहे हैं हमेशा अपने संग्रह में चीजों की अधिकतम राशि होने जा रहा है।

आप

Meteor.publish("keyword_hits", function() { 
     console.log('keywords: ' + Keywords.find({}, {sort: {count:-1}, limit:25}).fetch().length); 
     return Keywords.find({}, {sort: {count:-1}, limit:25}); 
}); 

तो बजाय .count() बुला और इसके बजाय आप कॉल, .fetch() जो अपने संग्रह से चुना 25 प्रविष्टियों देता है, फिर उस पर .length कहते हैं, आप प्रविष्टियों की सही संख्या थे देखेंगे करते हैं लौटा हुआ।

मैंने वास्तव में .count() के बारे में एक मुद्दा खोला क्योंकि सामान्य मोंगो में आप कर सकते हैं: .count({'applySkipLimit': true}); जो आपके स्कीप्स और आपकी सीमाओं को ध्यान में रखेगा।

वैसे भी, यह आपकी समस्या है।

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