AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。

スクリプトの考慮事項

次のコンテキストでは、データベースクエリの結果を渡すことができません。

  • クラスコンストラクタ関数

  • 非同期ジェネレーター関数

  • 配列上の.sort()へのコールバック

  • クラス内の JavaScript セッター

データベース呼び出しの結果にアクセスするには、非同期関数、非同期ジェネレーター関数、または .map() を使用します。

次のコンストラクターは動作しません。

// This code will failclass FindResults { constructor() { this.value = db.students.find(); }} // This code will failfunction listEntries() { return db.students.find(); }class FindResults { constructor() { this.value = listEntries(); }}

代わりに、 async関数を使用してください。

class FindResults { constructor() { this.value = ( async() => { return db.students.find(); } )(); }}

注意

非同期 JavaScript を操作する代わりに、クラス内でデータベース操作を実行するメソッドを作成することもできます。

class FindResults { constructor() { } init() { this.value = db.students.find(); } }

このクラスを使用するには、まずクラス インスタンスを作成し、次に.init()メソッドを呼び出します。

次のジェネレーター関数は動作しません。

// This code will failfunction* FindResults() { yield db.students.findOne();} // This code will failfunction listEntries() { return db.students.findOne(); }function* findResults() { yield listEntries();}

代わりにasync generator functionを使用してください。

function listEntries() { return db.students.findOne(); }async function* findResults() { yield listEntries();}

次の配列ソートは機能しません。

// This code will faildb.getCollectionNames().sort( ( collectionOne, collectionTwo ) => { return db[ collectionOne ].estimatedDocumentCount() - db[ collectionOne ].estimatedDocumentCount() )} );

代わりに.map()を使用してください。

db.getCollectionNames().map( collectionName => { return { collectionName, size: db[ collectionName ].estimatedDocumentCount() };} ).sort( ( collectionOne, collectionTwo ) => { return collectionOne.size - collectionTwo.size;} ).map( collection => collection.collectionName);

この配列ソートのアプローチは、サポートされていない同等のコードよりもパフォーマンスが高いことが多い。

次の JavaScript 設定は機能しません。

// This code will failclass TestClass { value = 1; get property() { return this.value; } // does not work: set property(value) { this.value = db.test.findOne({ value }); }}