2012-02-16 87 views
10

我试图通过Node.js与MongoDB进行接口,并且在count()方法中遇到了一些麻烦。我正在使用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); 
     }); 
    }); 
    }); 
}; 

我相信,一切存在(又名都定义科尔和光标),但它只是如果我的query.params字段为空的作品(即发现整个集合的计数)。所以如果我试图用任何种类的选择器来运行查找,查找就可以工作,但是它拒绝指望返回的光标。从我在网上阅读的内容看,这看起来是正确的方式,但显然有些问题。感谢您的帮助!

+0

你是什么意思时,你说拒不算?它给你错误的计数或抛出错误? – 2012-02-16 20:24:15

+0

就像在它从字面上只是永远不会完成,也就是从来没有调用传递给计数的回调。我已经运行了大约10分钟,它只是从来没有完成。 coll.find调用需要非常短的时间,但是某些东西并不适用于计数。 – MrJaeger 2012-02-16 20:26:20

+0

你有没有试过''console.log''ging你收到的每个错误对象? 什么是正在使用的查询参数和选项? – 2012-02-16 22:05:57

回答

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); 
    }); 
    }); 
};