2010-11-19 80 views

回答

2

它們是一樣的。 MongoDB將所有查詢參數看作一個對象。在這種情況下,count是一個'遊標方法',這意味着它在服務器端執行。請參閱:http://www.mongodb.org/display/DOCS/Querying

+0

是的包裝,他們是一樣。這只是一個方便的方法在遊標上。 – 2010-11-20 18:59:21

6

這裏有一個小竅門,看看有什麼MongoDB的引擎蓋下命令做到:

> 
> db.mydb.count 
function (x) { 
    return this.find(x).count(); 
} 
> 
> db.mydb.find().count 
function (applySkipLimit) { 
    var cmd = {count:this._collection.getName()}; 
    if (this._query) { 
     if (this._special) { 
      cmd.query = this._query.query; 
     } else { 
      cmd.query = this._query; 
     } 
    } 
    cmd.fields = this._fields || {}; 
    if (applySkipLimit) { 
     if (this._limit) { 
      cmd.limit = this._limit; 
     } 
     if (this._skip) { 
      cmd.skip = this._skip; 
     } 
    } 
    var res = this._db.runCommand(cmd); 
    if (res && res.n != null) { 
     return res.n; 
    } 
    throw "count failed: " + tojson(res); 
} 

所以,是的,你可以看到,collection.count只是圍繞collection.find().count

相關問題