2010-11-19 20 views

Répondre

2

Ce sont les mêmes. MongoDB examine tous les paramètres de la requête en tant qu'objet unique. Dans ce cas, count est une «méthode curseur» qui signifie qu'elle est exécutée côté serveur. Voir: http://www.mongodb.org/display/DOCS/Querying

+0

Eh oui, ils sont le même. C'est juste une méthode pratique sur le curseur. –

6

Voici une petite astuce pour voir ce que MongoDB commandes font sous le capot:

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

Alors oui, vous pouvez voir que collection.count est juste une enveloppe autour collection.find().count