私はたくさんカウントする必要がありますmondodbで高速の基準を持つ文書(30 M)のリストmongodbのdb.mydb.find({tag: 'java'})。count()とdb.mydb.count({tag: 'java'})の違いは何ですか?
db.mydb.find({tag: 'java'})のcount()とdb.mydb.count({tag: 'java '})
もう1つは速いですか?
タグにはインデックスがあります。
ありがとう、
フェデリコ
私はたくさんカウントする必要がありますmondodbで高速の基準を持つ文書(30 M)のリストmongodbのdb.mydb.find({tag: 'java'})。count()とdb.mydb.count({tag: 'java'})の違いは何ですか?
db.mydb.find({tag: 'java'})のcount()とdb.mydb.count({tag: 'java '})
もう1つは速いですか?
タグにはインデックスがあります。
ありがとう、
フェデリコ
これらは同じです。 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
うんであることを確認することができ、彼らは同じ。これは、カーソル上の便利なメソッドです。 –