データスキーマの分析
Schema タブには、特定のコレクション内のフィールドのデータ型と形状の概要が表示されます。データベースとコレクションは左側のナビゲーションに表示されます。
概要は、コレクション内のドキュメントをサンプリングしたに基づいています。 スキーマの概要には、日付や整数の最小値と最大値、特定の値の発生頻度、データのカーディナリティなど、フィールドの内容に関する追加データが含まれる場合があります。
MongoDB には 柔軟なスキーマ モデルがあり、一部のフィールドにはドキュメントごとに異なる型のデータが含まれる場合があります。例として、 address
という名前のフィールドには、一部のドキュメントでは文字列と整数、他のドキュメントではオブジェクト、またはこれら 3 つすべての組み合わせが含まれる場合があります。
異種フィールドの場合、Schema タブには、フィールド内に含まれるさまざまなデータ型の内訳と、各データ型の割合が表示されます。
例
Schema タブの上部には、コレクション内のドキュメントの合計数、ドキュメントの平均サイズ、コレクションが占有するディスク容量の合計など、test.restaurants
コレクションのサイズ情報が表示されます。
次のフィールドに詳細が表示されます。
_id
フィールドは ObjectId です。各 ObjectId にはタイムスタンプが含まれているため、Compass にはサンプリングされたドキュメントの作成時間の範囲が表示されます。address
フィールドには 4 つのネストされたフィールドが含まれています。フィールド パネルを展開すると、ネストされた各フィールドの分析が表示されます。borough
フィールドには、レストランが位置する地区を示す文字列が含まれています。濃度は十分に低いので、Compass ではフィールドの内容を段階的に示し、最も頻繁に出現する文字列を左に表示できます。grades
フィールドには、文字列の配列が含まれています。分析は、アレイの長さの最小値、最大値、平均値を示しています。
クエリ バー
Schema タブの クエリ バー を使用すると、クエリフィルターを作成して結果セットを制限できます。Options ボタンをクリックして、表示する特定のフィールドや返される結果の数などのクエリ オプションを指定します。
注意
クエリ結果セットが 1000 ドキュメントを超える場合、Compass では結果のサブセットが表示されます。それ以外の場合、Compass では結果セット全体が表示されます。
サンプリングの詳細についてはサンプリングを参照してください。
Tip
Schema タブでは、クエリ ビルダを使用してクエリ バーにクエリを入力することもできます。
フィールドの説明
各フィールドについて、Compass は、フィールドに含まれるデータ型と値の範囲に関する概要情報を表示します。データの種類とカーディナリティのレベルに応じて、Compass はヒストグラム、段階的なバー、地図、サンプル データを表示し、各フィールドに含まれるデータの形状と範囲を把握できるようにします。
1 つのデータ型のフィールド
以下は、date
型のデータを含む last_login
というフィールドのデータ型の概要の例です。
複数のデータ型を持つフィールド
複数のデータ型を含むフィールドの場合、Compass はドキュメント全体のさまざまなデータ型の割合の内訳を表示します。以下の例では、チャートには phone_no
というフィールドの内容が表示されており、ドキュメントの 20% が int32
型で、残りの 80% が型 string
です。
欠落しているフィールド
コレクションに、すべてのフィールドに値が含まれていないドキュメントが含まれている場合、欠落している値は undefined
として表示されます。以下の例では、サンプル文書の 40% で age
フィールドに値が記録されていません。
文字列
文字列は 3 つの異なる方法で表示されます。フィールドに完全にユニークな文字列がある場合、Compass は指定されたフィールドからランダムに選択された文字列値を表示します。円形の更新アイコンをクリックすると、フィールドからランダムに選択された新しい値のセットが表示されます。
異なる文字列値が少ない場合、Compass は文字列値を 1 つのグラデーション バーに表示し、文字列値の母集団の割合を示します。
重複する文字列値が複数ある場合、Compass はフィールド内で見つかった各 文字列の頻度を示すヒストグラムを表示します。
注意
各バーの上にマウスを移動させると、文字列値を示すツールチップが表示される。
数値
数値の表現方法は文字列に似ています。ユニークな番号は、次のように表示されます。
重複番号は、その頻度を示すヒストグラムで表示されます。
日付とオブジェクト ID
日付を表すフィールド(およびタイムスタンプを含む ObjectID データ型を含むフィールド)は、複数の棒グラフに表示されます。上段の 2 つのチャートは、タイムスタンプ値の曜日と時間帯を表している。
下部の単一のグラフには、最初と最後のタイムスタンプの値が表示されます。また、垂直線は最初から最後までの範囲にわたるタイムスタンプの分布を表しています。
埋め込みドキュメントと配列
サブドキュメントまたは配列を含むフィールドには、その横に小さな三角形が表示され、サブドキュメントまたは配列内に含まれるデータが視覚的に表現されます。
三角形をクリックするとフィールドが展開され、埋め込まれたドキュメントが表示されます。
GeoJSON と [longitude,latitude]
配列
GeoJSON データまたは [longitude,latitude]
配列を含むフィールドは、インタラクティブ マップとともに表示されます。Compass でのロケーション データのやりとりについて詳細は、「ロケーション データの分析」を参照してください。
注意
サードパーティのマッピング サービスは Compass Isolated Edition では利用できません。
混合型のチャートを表示
フィールドに型が混在している場合は、type
フィールドをクリックすると、各型の異なるグラフを表示できます。以下の例では、age
フィールドに文字列値が表示されます。
int32
型をクリックすると、グラフに数値データが表示されます。
クエリ ビルダ
Schema タブでは、クエリ バーにフィルターを手動で入力するか、Compass クエリ ビルダを使用してフィルターを生成できます。クエリ ビルダを使用すると、スキーマ内の 1 つ以上のフィールドからデータ要素を選択し、選択した要素に一致するクエリを作成できます。
Tip
クリック可能なクエリ ビルダを使用して最初のクエリフィルターを作成し、生成されたフィルターを正確な要件に合わせて手動で編集できます。
次の手順では、クエリ バーを使用して複雑なクエリを作成する手順について説明します。
ロケーション データの分析
Schema タブでは、インタラクティブ マップを使用してロケーション データをフィルタリングおよび分析できます。フィールドに GeoJSON データまたは [longitude,latitude]
配列が含まれている場合、Schema タブにはフィールドの点を含むマップが表示されます。ロケーション フィールドのデータ型は coordinates
です。
ロケーション フィルターを適用する
マップにフィルターを適用して、特定の範囲のポイントのみを分析できます。ロケーション フィルターを定義するには、次の手順に従います。
地図の右上にある [Circle] ボタンをクリックします。
マップをクリックしてドラッグし、分析するマップの領域を含む円を描きます。
必要に応じてこのプロセスを繰り返し、スキーマ分析にマップの追加領域を含めます。
ロケーション フィルターを描画するとクエリ バーがアップデートされ、スキーマ分析に適用された $geoWithin クエリで使用される正確な座標が表示されます。
複数のロケーション フィルターを指定すると、クエリは複数の $geoWithin
演算子を含む $or クエリになります。
ロケーション フィルターを編集する
ロケーション フィルターを移動またはサイズを変更するには、地図の右側にある をクリックします。次のように表示されるフィルター編集モードにします。
- フィルターを移動するには、次の手順に従います。
- 円の中心にある四角形をクリックしてドラッグします。
- フィルターのサイズを変更するには、次の手順に従います。
- 円の端にある正方形をクリックしてドラッグします。
フィルターを変更したら、[Save] をクリックします。
位置情報フィルターを削除する
マップからロケーション フィルターを削除するには、次の手順に従います。
地図の右側にある をクリックします。
次のいずれかをクリックします。
そのフィルターを削除するロケーション フィルター。
Clear All (すべてのロケーション フィルターを解除する場合)。
[Save] をクリックします。
トラブルシューティング
スキーマの分析がタイムアウトする場合は、分析対象のコレクションが非常に大きいために、分析が完了する前に MongoDB が操作を停止している可能性があります。操作時間が完了するまで、MAX TIME MS
の値を増やしてください。
MAX TIME MSの値を増やすには、次の手順に従います。
クエリバーで、Options を展開します。
コレクションに合わせて MAX TIME MS の値を増やします。MAX TIME MS のデフォルトは 60000 ミリ秒、つまり 60 秒ですが、大規模なコレクションの分析には数十秒かかる場合があります。
MAX TIME MS の値を増やしたら、[Analyze] をクリックしてスキーマ分析を再試行します。