Docs 菜单
Docs 主页
/
MongoDB Compass
/ /

导出模式

在此页面上

  • Schema Object Properties
  • 示例模式

可以在分析后导出模式。这对于共享模式和跨集合比较模式很有用。

如果还没有这样做,请先分析模式:

  1. 选择所需的集合并单击 Schema(模式)标签页。

  2. 单击 Analyze Schema(连接)。

注意

当 Compass 分析模式时,它会从您的集合中随机抽取文档子集进行采样。要了解有关采样的更多信息,请参阅 采样。

分析模式后,导出模式:

  1. 在顶部菜单栏中,单击 Collection

  2. 在下拉列表中点击 Share Schema as JSON

显示“集合”下拉菜单的图像

您的模式将作为 JSON 对象复制到剪贴板。

模式对象具有 countfields 属性:

  • 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:

  1. Copy 上面的 JSON 文档。

  2. 在 MongoDB Compass 中,选择一个集合或创建一个新集合以将复制的文档导入其中。随即显示 Documents(文档)标签页。

  3. 单击 Add Data(连接)。

  4. 从下拉列表中选择 Insert Document

  5. 在对话框的 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}

后退

分析数据架构