system.js という特別なシステム コレクションがあり、再利用するために JavaScript 関数を保存できます。
始める前に
このタスクは、レガシー シェルを使用して、mongo system.jsコレクションからサーバーサイド関数をロードします。このバージョンのシェルはサポート対象外になりました。 MongoDB Shell の代替ソリューションについては、 スクリプトの作成 を参照してください。
このタスクについて
system.jsを使用する場合は、以下の推奨事項を考慮してください。
アプリケーション ロジックをデータベースに保存しないでください。
MongoDB 内で JavaScript を実行する場合、パフォーマンス上の制限があります。
アプリケーションとバージョン管理を共有する場合、最も効果的なのはアプリケーション コードです。
手順
関数を保存するには、次の例のように、関数をsystem.jsコレクションに挿入します。
JavaScript 関数をデータベースに格納する
JavaScript 関数をデータベースに保存するには、次のフィールドを含むドキュメントを挿入します。
_idフィールドには関数の名前が保持され、データベースごとに一意になります。valueフィールドには、関数定義が保持されます。
次の例では、system.jsコレクション内にecho関数を作成しています。
db.system.js.insertOne( { _id: "echo", value : function(x) { return x; } } )
次の例では、system.jsコレクション内にisEven関数を作成しています。
db.system.js.insertOne( { _id: "isEven", value: function (num) { return num % 2 === 0; } } )
BSON 型として保存されたこれらの関数は、mapReduce や $where などの任意の JavaScript コンテキストから使用できます。
注意
非推奨の BSON 型 JavaScript(スコープあり)として保存された関数は、mapReduceおよび$whereでは使用できません。