system.js という特別なシステム コレクションがあり、再利用するために JavaScript 関数を保存できます。
始める前に
このタスクは、レガシーmongo shell を使用して、 system.jsコレクションからサーバーサイド関数をロードします。 このバージョンの shell はサポート対象外になりました。 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では使用できません。