JavaScript メソッド
JavaScript メソッドは、抽象化レイヤーと見なすことができます。多くのメソッドは、データベース コマンドの単なるラッパーです。なしで関数名を書くだけで、メソッドをイントロスペクトできます()
。
例:
> db.stats
function (scale) {
return this.runCommand({dbstats:1, scale:scale});
}
一部のメソッドは、複数のコマンドを実行し、出力を集約します。例:
> db.printCollectionStats
function () {
var mydb = this;
this.getCollectionNames().forEach(function (z)
{print(z);printjson(mydb.getCollection(z).stats());print("---");});
}
JavaScript メソッドとデータベース コマンド
、などfind
の一部のメソッドはコマンドを呼び出しません:update
delete
> db.coll.find
function (query, fields, limit, skip) {
return new DBQuery(this._mongo, this._db, this, this._fullName, this._massageObject(query), fields, limit, skip);
}
MongoDB ワイヤ プロトコルは、、、、 などに対して異なるリクエスト オペコードを指定します。query
insert
update
delete
getmore
killcursors
コマンドは、異なるリクエスト オペコードを使用して実装できた可能性があります。しかし、MongoDB の作成者は、と呼ばれる特別なコレクションに対する通常のクエリ$cmd
としてコマンドを実装することにしました。
の内省はそれをrunCommand
明らかにします:
> db.runCommand
function (obj) {
if (typeof obj == "string") {
var n = {};
n[obj] = 1;
obj = n;
}
return this.getCollection("$cmd").findOne(obj);
}
内部コマンド
一部のコマンドは内部的なものであり、ユーザーが呼び出すことを意図していません。したがって、MongoDB シェルには、これらのコマンドに便利にアクセスするための方法は提供されていません。
いくつかの例: