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

コレクションの数を減らす

コレクションを作成しすぎると、パフォーマンスが低下する恐れがあります。 MongoDBはすべてのコレクションで 、追加のストレージを使用するデフォルトの_idインデックスを作成します。 過剰なコレクションを作成すると、それらのコレクションとインデックスがレプリカセットのリソースに負担がかかり、パフォーマンスを低下させる可能性があります。

1 時間ごとの日次温度読み取り値を保存する次のスキーマを検討してください。 temperatureデータベースは、毎日の読み取り値を個別のコレクションに保存します。

// Temperatures for May 10, 2024{ _id: 1, timestamp: "2024-05-10T010:00:00Z", temperature: 60},{ _id: 2 timestamp: "2024-05-10T011:00:00Z", temperature: 61},{ _id: 3 timestamp: "2024-05-10T012:00:00Z", temperature: 64}...
// Temperatures for May 11, 2024{ _id: 1, timestamp: "2024-05-11T010:00:00Z", temperature: 68},{ _id: 2 timestamp: "2024-05-11T011:00:00Z", temperature: 72},{ _id: 3 timestamp: "2024-05-11T012:00:00Z", temperature: 72}...

コレクション数に上限がない場合、デフォルトの_idインデックス数が増えてパフォーマンスが低下する可能性があります。

さらに、このアプローチでは複数のコレクションにわたってクエリを実行するために$lookup操作が必要になります。 $lookup操作はクエリの複雑さを含み、リソースに負担がかかる可能性があります。

コレクションの数を減らすには、未使用のコレクションを削除またはアーカイブするか、関連するコレクションを統合してデータを非正規化するか、必要に応じて埋め込みドキュメントを活用してデータスキーマを再モデル化します。

スキーマを変更して、毎日の温度の読み取りを単一のコレクションに保存することができます。 (例: )。

db.dailyTemperatures.insertMany( [ { _id: ISODate("2024-05-10T00:00:00Z"), readings: [ { timestamp: "2024-05-10T10:00:00Z", temperature: 60 }, { timestamp: "2024-05-10T11:00:00Z", temperature: 61 }, { timestamp: "2024-05-10T12:00:00Z", temperature: 64 } ] }, { _id: ISODate("2024-05-11T00:00:00Z"), readings: [ { timestamp: "2024-05-11T10:00:00Z", temperature: 68 }, { timestamp: "2024-05-11T11:00:00Z", temperature: 72 }, { timestamp: "2024-05-11T12:00:00Z", temperature: 72 } ] }] )

更新されたスキーマは、元のスキーマよりも必要なリソースが少なくなります。 1 日ごとに個別のインデックスが必要になる代わりに、デフォルトの_idインデックスを使用することで、日付別のクエリが容易になります。

ルール バッジを取得する

「高度なスキーマ パターンとアンパターン」を無料でマスターします。

詳細

このページを評価