我需要數量很多的文件(30米)與mondodb快速標準mongodb中的db.mydb.find({tag:'java'})。count()和db.mydb.count({tag:'java'})有什麼區別
db.mydb.find({tag:'java'})。count()和db.mydb.count({tag:'java '})
它比另一個快嗎?
我有和標籤上的索引。
謝謝,
費德里科。
我需要數量很多的文件(30米)與mondodb快速標準mongodb中的db.mydb.find({tag:'java'})。count()和db.mydb.count({tag:'java'})有什麼區別
db.mydb.find({tag:'java'})。count()和db.mydb.count({tag:'java '})
它比另一個快嗎?
我有和標籤上的索引。
謝謝,
費德里科。
它們是一樣的。 MongoDB將所有查詢參數看作一個對象。在這種情況下,count是一個'遊標方法',這意味着它在服務器端執行。請參閱:http://www.mongodb.org/display/DOCS/Querying
這裏有一個小竅門,看看有什麼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
是的包裝,他們是一樣。這只是一個方便的方法在遊標上。 – 2010-11-20 18:59:21