2012-02-16 19 views
10

मैं नोड.जेएस के माध्यम से मोंगोडीबी के साथ इंटरफेस करने का प्रयास कर रहा हूं और मुझे गिनती() विधि के साथ कुछ परेशानी हो रही है। मैं node-mongodb-native का उपयोग कर रहा हूं और ऐसा लगता है कि मैं जो कर रहा हूं वह काम करना चाहिए। मेरे कोड नमूना:MongoDB गणना संग्रह Node.js

var get_total_num_docs = function(db_client, query, cb){ 
    db_client.collection(query['collection'], function(e, coll) { 
    coll.find(query.params, query.options, function (e, cursor) { 
     cursor.count(function (e, count) { 
     console.log(count); 
     return cb(e, count); 
     }); 
    }); 
    }); 
}; 

मुझे यकीन है कि सब कुछ मौजूद है (उर्फ coll और कर्सर दोनों परिभाषित कर रहे हैं) कर रहा हूँ, लेकिन यह केवल (अर्थात एक पूरा संग्रह की गिनती की खोज) काम करता है अगर मेरे query.params फ़ील्ड रिक्त है। इसलिए यदि मैं किसी भी प्रकार के चयनकर्ता के साथ कोई खोज चलाने की कोशिश कर रहा हूं, तो खोज कार्य करता है, लेकिन फिर यह लौटा कर्सर पर भरोसा करने से इंकार कर देता है। जो मैंने ऑनलाइन पढ़ा है, उससे ऐसा करने का सही तरीका दिखता है, लेकिन जाहिर है कि कुछ गलत है। किसी भी और सभी तरह की मदद के लिए धन्यवाद!

+0

आपका क्या मतलब है जब आप कहते हैं कि यह गिनती करने के लिए मना कर दिया? क्या यह आपको गलत गिनती दे रहा है या एक त्रुटि फेंक रहा है? –

+0

जैसा कि शाब्दिक रूप से कभी खत्म नहीं होता है, उर्फ ​​कॉलबैक को गिनने के लिए पारित किया जाता है जिसे कभी नहीं कहा जाता है। मैंने इसे लगभग 10 मिनट तक चलाया है और यह कभी खत्म नहीं होता है। Coll.find कॉल बहुत कम समय लेता है, लेकिन कुछ गिनती के साथ काम नहीं कर रहा है। – MrJaeger

+0

क्या आपने प्रत्येक त्रुटि ऑब्जेक्ट को 'console.log''ging करने का प्रयास किया है? और क्वेरी पैरामीटर और विकल्पों का उपयोग क्या किया जा रहा है? –

उत्तर

18

आप एक कर्सर की जरूरत नहीं है, तो आप इस तरह अपने कोड लिखना चाहिए:

var get_total_num_docs = function(db_client, query, cb){ 
    db_client.collection(query['collection'], function(e, coll) { 
    coll.find(query.params, query.options).count(function (e, count) { 
     console.log(count); 
     return cb(e, count); 
    }); 
    }); 
}; 
संबंधित मुद्दे