サーバーサイド JavaScript
重要
サーバーサイド JavaScript の非推奨化
MongoDB 8.0以降、サーバーサイドJavaScript関数( $accumulator
、 $function
、 $where
)は非推奨です。 MongoDBでは、これらの関数を実行すると警告がログに記録されます。
MongoDB 5.0 以降では map-Reduce は非推奨となります。
MongoDB は、JavaScript コードをサーバー側で実行する次のコマンド、メソッド、演算子を提供します。
mapReduce
と対応するmongosh
メソッドdb.collection.mapReduce()
。 詳細については、「 Map-Reduce 」を参照してください。$where
ドキュメントをクエリするために JavaScript 式または関数を評価する 演算子 。$accumulator
と$function
の集計操作を使用し、ユーザーがカスタム集計式を定義できるようにします。
また、サーバー上で実行する JavaScript ファイルをmongosh
に指定することもできます。 詳細については、「サーバー上のmongosh
インスタンスを介して.js
ファイルの実行」を参照してください。
注意
MongoDB の JavaScript
これらのメソッドは JavaScript を使用しますが、MongoDB とのほとんどのやり取りでは JavaScript は使用されず、やり取りするアプリケーションの言語で慣用的なドライバーが使用されます。
JavaScript コードをサーバー側で実行する必要がない場合は、「 JavaScript のサーバー側実行を無効にする 」を参照してください。
注意
SELinux を使用している場合、サーバー側の JavaScriptを必要とする MongoDB 操作ではセグメント違反エラーが発生します。 「 JavaScriptのサーバー側実行を無効にする 」では、サーバー側 JavaScript の実行を無効にする方法について解説しています。
サーバー上の インスタンスを介して .js
ファイルを実行mongosh
JavaScript( .js
)ファイルをmongosh
に指定すると、サーバー上でファイルを実行できます。 これは、バッチ管理作業を実行するのに適した手法です。 サーバー上でローカルホスト インターフェース経由で接続するmongosh
を実行すると、接続は高速で低レイテンシになります。
JavaScript のサーバー側実行を無効にする
JavaScript のサーバー側実行をすべて無効にすることができます。
mongod
インスタンスの場合は、コマンドラインで--noscripting
オプションを渡すか、構成ファイルでsecurity.javascriptEnabled
を false に設定します。mongos
インスタンスの場合は、コマンドラインで--noscripting
オプションを渡すか、構成ファイルでsecurity.javascriptEnabled
を false に設定します。
動作
同時実行性
同時実行情報については、個々のメソッドまたは演算子のドキュメントを参照してください。 同時実行テーブルも参照してください。
サポートされていない配列関数と文字列関数
MongoDB 6.0では、サーバーサイド JavaScript 、 $accumulator
、 $function
、 $where
式に使用される内部 JavaScript エンジンが MozJS- 60から MozJS- 91にアップグレードされています。 MozJS- 60に存在した非推奨、非標準の配列関数と string 関数は、MozJS- 91で一部削除されました。
削除された配列関数と文字列関数の完全なリストについては、6.0 互換性ノートを参照してください。