使用count()或findOne()来获得更好的性能?

时间:2012-07-09 17:39:19

标签: node.js mongodb

我正在使用NodeJ和本机MongoDB驱动程序来创建应用程序。 我想确保一个具有特定条件的记录存在与否,我想知道哪种方法更好?

collection.find({...}).count(function(err, count){
    if(count > 0) {
       //blah blah
    }
})

collection.findOne({...}, function(err, object){
    //blah blah
})

1 个答案:

答案 0 :(得分:1)

this question。我相信findlimit(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是你的朋友。