スキーマのエクスポート
スキーマを分析した後、エクスポートすることができます。これは、スキーマを共有したり、コレクション間でスキーマを比較したりする場合に役立ちます。
まだ行っていない場合は、スキーマを分析します。
目的のコレクションを選択し、Schema タブをクリックします。
[Analyze Schema] をクリックします。
注意
Compass がスキーマを分析すると、コレクションからドキュメントのランダムなサブセットをサンプリングします。サンプリングについて詳しくは、「サンプリング」を参照してください。
スキーマが分析されたら、エクスポートします。
上部のメニューバーで、Collection をクリックします。
ドロップダウンから、Share Schema as JSON をクリックします。
スキーマは JSON オブジェクトとしてクリップボードにコピーされます。
スキーマ オブジェクトのプロパティ
スキーマ オブジェクトには、count
プロパティと fields
プロパティがあります。
count
は、スキーマを生成するためにコレクションからサンプリングされたドキュメントの数を表す整数です。fields
は、サンプリング中に分析されたドキュメントの各フィールドに対応するメタデータ オブジェクトの配列です。fields
配列の各要素には、次のフィールドが含まれています。
プロパティ | データ型 | 説明 |
---|---|---|
| 文字列 | 対応するフィールドの名前。例: |
| 文字列 | ドキュメント内の対応するフィールドへのパス。 |
| 整数 | 対応するフィールドが表示されるドキュメントの数。 |
| 配列 | 対応するフィールドに表示される各データ型を表すメタデータ オブジェクトの配列。 |
| 文字列 | このデータ型の名前。 |
| 文字列 | このデータ型の BSON タイプ。 |
| 文字列 | ドキュメント内の対応するフィールドへのパス。 |
| 整数 | このデータ型が対応するフィールドに表示される回数。 |
| 配列 | 対応するフィールドに表示され、このデータ型に一致する実際のサンプリング値の配列。 |
| 整数 | 対応するフィールドが配列の場合、その配列内の要素の数。 |
| 番号 | 対応するフィールドの値がランダム ドキュメント内のこのデータ型である確率。 |
| 整数 | 対応するフィールドに現れる、このデータ型のユニークな値の数。 |
| ブール値 |
|
| 配列 | このデータ型が配列の場合、対応するフィールドにある配列の長さを表す整数の配列。他のデータ型には表示されません。 |
| 番号 | このデータ型が配列の場合、サンプリングされたドキュメント全体の対応するフィールドの配列の平均長。他のデータ型には表示されません。 |
| 整数 | コレクションからサンプリングされたドキュメントの数。 |
| 文字列または配列 | 対応するフィールドに可能なタイプを表す文字列、または文字列の配列。 |
| ブール値 |
|
| 番号 | ランダムなドキュメントに、対応するフィールドが含まれている確率。 |
サンプル スキーマ
次の例では、それぞれ sport
フィールドとそのスポーツに関する固有の情報を持つ 3 つのドキュメントのコレクションを使用します。
1 [ 2 { 3 "_id": { "$oid":"5e8359ba7782b98ba98c16fd" }, 4 "sport": "Baseball", 5 "equipment": [ "bat", "baseball", "glove", "helmet" ] 6 }, 7 { 8 "_id": { "$oid":"5e835a727782b98ba98c16fe" }, 9 "sport": "Football", 10 "variants": { 11 "us":"Soccer", 12 "eu":"Football" 13 } 14 }, 15 { 16 "_id": { "$oid":"5e835ade7782b98ba98c16ff" }, 17 "sport": "Cricket", 18 "origin": "England" 19 } 20 ]
上記の例を MongoDB Compass にインポートして、スキーマ出力を試すことができます。サンプル コレクションを MongoDB Compass にインポートするには、次の手順を行います。
Copy : 上記の JSON ドキュメントをコピーします。
MongoDB Compass で、コピーしたドキュメントをインポートするコレクションを選択するか、新しいコレクションを作成します。Documents タブが表示されます。
[Add Data] をクリックします。
ドロップダウンから [Insert Document] を選択します。
ダイアログの JSON ビューで、コピーしたドキュメントを貼り付けて Insert をクリックします。
上記の例では、次のスキーマが出力されます。
1 { 2 "fields": [ 3 { 4 "name": "_id", 5 "path": "_id", 6 "count": 3, 7 "types": [ 8 { 9 "name": "ObjectID", 10 "bsonType": "ObjectID", 11 "path": "_id", 12 "count": 3, 13 "values": [ 14 "5e8359ba7782b98ba98c16fd", 15 "5e835a727782b98ba98c16fe", 16 "5e835ade7782b98ba98c16ff" 17 ], 18 "total_count": 0, 19 "probability": 1, 20 "unique": 3, 21 "has_duplicates": false 22 } 23 ], 24 "total_count": 3, 25 "type": "ObjectID", 26 "has_duplicates": false, 27 "probability": 1 28 }, 29 { 30 "name": "equipment", 31 "path": "equipment", 32 "count": 1, 33 "types": [ 34 { 35 "name": "Undefined", 36 "type": "Undefined", 37 "path": "equipment", 38 "count": 2, 39 "total_count": 0, 40 "probability": 0.6666666666666666, 41 "unique": 1, 42 "has_duplicates": true 43 }, 44 { 45 "name": "Array", 46 "bsonType": "Array", 47 "path": "equipment", 48 "count": 1, 49 "types": [ 50 { 51 "name": "String", 52 "bsonType": "String", 53 "path": "equipment", 54 "count": 4, 55 "values": [ 56 "bat", 57 "baseball", 58 "glove", 59 "helmet" 60 ], 61 "total_count": 0, 62 "probability": 1, 63 "unique": 4, 64 "has_duplicates": false 65 } 66 ], 67 "lengths": [ 68 4 69 ], 70 "total_count": 4, 71 "probability": 0.3333333333333333, 72 "average_length": 4 73 } 74 ], 75 "total_count": 3, 76 "type": [ 77 "Undefined", 78 "Array" 79 ], 80 "has_duplicates": true, 81 "probability": 0.3333333333333333 82 }, 83 { 84 "name": "origin", 85 "path": "origin", 86 "count": 1, 87 "types": [ 88 { 89 "name": "Undefined", 90 "type": "Undefined", 91 "path": "origin", 92 "count": 2, 93 "total_count": 0, 94 "probability": 0.6666666666666666, 95 "unique": 1, 96 "has_duplicates": true 97 }, 98 { 99 "name": "String", 100 "bsonType": "String", 101 "path": "origin", 102 "count": 1, 103 "values": [ 104 "England" 105 ], 106 "total_count": 0, 107 "probability": 0.3333333333333333, 108 "unique": 1, 109 "has_duplicates": false 110 } 111 ], 112 "total_count": 3, 113 "type": [ 114 "Undefined", 115 "String" 116 ], 117 "has_duplicates": true, 118 "probability": 0.3333333333333333 119 }, 120 { 121 "name": "sport", 122 "path": "sport", 123 "count": 3, 124 "types": [ 125 { 126 "name": "String", 127 "bsonType": "String", 128 "path": "sport", 129 "count": 3, 130 "values": [ 131 "Baseball", 132 "Football", 133 "Cricket" 134 ], 135 "total_count": 0, 136 "probability": 1, 137 "unique": 3, 138 "has_duplicates": false 139 } 140 ], 141 "total_count": 3, 142 "type": "String", 143 "has_duplicates": false, 144 "probability": 1 145 }, 146 { 147 "name": "variants", 148 "path": "variants", 149 "count": 1, 150 "types": [ 151 { 152 "name": "Undefined", 153 "type": "Undefined", 154 "path": "variants", 155 "count": 2, 156 "total_count": 0, 157 "probability": 0.6666666666666666, 158 "unique": 1, 159 "has_duplicates": true 160 }, 161 { 162 "name": "Document", 163 "bsonType": "Document", 164 "path": "variants", 165 "count": 1, 166 "fields": [ 167 { 168 "name": "eu", 169 "path": "variants.eu", 170 "count": 1, 171 "types": [ 172 { 173 "name": "String", 174 "bsonType": "String", 175 "path": "variants.eu", 176 "count": 1, 177 "values": [ 178 "Football" 179 ], 180 "total_count": 0, 181 "probability": 1, 182 "unique": 1, 183 "has_duplicates": false 184 } 185 ], 186 "total_count": 1, 187 "type": "String", 188 "has_duplicates": false, 189 "probability": 1 190 }, 191 { 192 "name": "us", 193 "path": "variants.us", 194 "count": 1, 195 "types": [ 196 { 197 "name": "String", 198 "bsonType": "String", 199 "path": "variants.us", 200 "count": 1, 201 "values": [ 202 "Soccer" 203 ], 204 "total_count": 0, 205 "probability": 1, 206 "unique": 1, 207 "has_duplicates": false 208 } 209 ], 210 "total_count": 1, 211 "type": "String", 212 "has_duplicates": false, 213 "probability": 1 214 } 215 ], 216 "total_count": 0, 217 "probability": 0.3333333333333333 218 } 219 ], 220 "total_count": 3, 221 "type": [ 222 "Undefined", 223 "Document" 224 ], 225 "has_duplicates": true, 226 "probability": 0.3333333333333333 227 } 228 ], 229 "count": 3 230 }