使用count()或findOne()获得更好的性能?
我正在使用NodeJs和本地MongoDB驱动程序来创build一个应用程序。 我想确保一个具有特定条件的logging是否存在,我想知道哪个方法更好?
collection.find({...}).count(function(err, count){ if(count > 0) { //blah blah } })
要么
collection.findOne({...}, function(err, object){ //blah blah })
看到这个问题 。 我相信find
limit(1)
是你的方式去。 (如果你想获得实际的文档数据查询,然后使用findOne
)。
在mongodb-native
,代码看起来像这样
function recordExists(selector, callback) { collection.find(selector, {limit: 1}, function(err, cursor) { if (err) return callback(err); cursor.count(function(err, cnt) { return callback(err, !!cnt); }); }); }
我对此有点困惑: collection.find({...}).count
。 原生驱动程序允许这样做吗? 是cursor.count
? 无论如何, limit
是你的朋友在这里。