导出模式
可以在分析后导出模式。这对于共享模式和跨集合比较模式很有用。
如果还没有这样做,请先分析模式:
选择所需的集合并单击 Schema(模式)标签页。
单击 Analyze Schema(连接)。
注意
当 Compass 分析模式时,它会从您的集合中随机抽取文档子集进行采样。要了解有关采样的更多信息,请参阅 采样。
分析模式后,导出模式:
在顶部菜单栏中,单击 Collection。
在下拉列表中点击 Share Schema as JSON 。
您的模式将作为 JSON 对象复制到剪贴板。
Schema Object Properties
模式对象具有 count
和 fields
属性:
count
是一个整数,表示从集合中采样以生成模式的文档数。fields
是一个元数据对象数组,对应于采样期间分析的文档中的每个字段。fields
数组中的每个元素都包含以下字段:
属性 | 数据类型 | 说明 |
---|---|---|
name | 字符串 | 相应字段的名称,例如 _id 。 |
path | 字符串 | 文档中对应字段的路径。 |
count | 整型 | 出现相应字段的文档数。 |
types | 阵列 | 代表相应字段中出现的每种数据类型的元数据对象数组。 |
types[n].name | 字符串 | 此数据类型的名称。 |
types[n].bsonType | 字符串 | 该数据类型的 BSON 类型。 |
types[n].path | 字符串 | 文档中对应字段的路径。 |
types[n].count | 整型 | 此数据类型在相应字段中出现的次数。 |
types[n].values | 阵列 | 相应字段中出现的与该数据类型匹配的实际样本值的数组。 |
types[n].total_count | 整型 | 如果相应字段是数组,则是该数组中元素的个数。 |
types[n].probability | 数值 | 在随机文档中,相应字段的值为该数据类型的概率。 |
types[n].unique | 整型 | 出现在相应字段中的该数据类型的唯一值的数量。 |
types[n].has_duplicates | 布尔 | true 如果该数据类型的单个值在相应字段中出现多次。否则,返回 false 。 |
types[n].lengths | 阵列 | 如果此数据类型是数组,则表示在相应字段中找到的数组长度的整数数组。不适用于其他数据类型。 |
types[n].average_length | 数值 | 如果该数据类型是数组,则为采样文档的相应字段中数组的平均长度。对于其他数据类型不存在。 |
total_count | 整型 | 从集合中抽样的文档数量。 |
type | 字符串或数组 | 表示相应字段的可能类型的字符串或字符串数组。 |
has_duplicates | 布尔 | true 如果一个值在相应字段中出现多次。否则,返回 false 。 |
probability | 数值 | 随机文档包含相应字段的概率。 |
示例模式
以下示例使用包含 3 个文档的集合,且每个文档均有一个 sport
字段以及有关该运动项目的唯一信息:
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 }