MongoDB 以基于 JSON 文档的格式存储信息。如果子文档的数量增加,文档的复杂性也会增加。使用图表掌握此类文档可能会使您的工作更加轻松。 DbSchema (www.dbschema.com) 可以使用图表表示文档。让我们考虑一下这个 JSON 文档:
{
"firstName": "John",
"lastName": "Smith",
"isAlive": true,
"age": 25,
"address": {
"streetAddress": "21 2nd Street",
"city": "New York", _
"state": "NY",
"postalCode": "10021-3100"
},
"phoneNumbers": [
{
"type": "home",
"number": "212 555-1234"
},
{
"type": "office",
"number": "646 555-4567"
}
],
"children": [],
"spouse": null
}
这将在 DbSchema 中表示为三个实体,每个子文档一个。
您可能会问这怎么可能,因为 MongoDB 不像关系数据库那样使用模式。好吧,DbSchema 确实通过扫描数据来发现模式。要做的是启动 DbSchema,连接到数据库(提供运行数据库的主机名),然后工作就完成了。
在 DbSchema 中,您可以使用所需的实体创建更多图表。图表称为“布局”,因为在每个布局中您可以打开不同的其他工具,如可视化查询生成器、查询编辑器或关系数据浏览。
如果您的数据库是空的,并且您希望在数据库中创建上面的集合,请在 DbSchema 中打开查询编辑器并执行以下代码:
{
"firstName": "John",
"lastName": "Smith",
"isAlive": true,
"age": 25,
"address": {
"streetAddress": "21 2nd Street",
"city": "New York", _
"state": "NY",
"postalCode": "10021-3100"
},
"phoneNumbers": [
{
"type": "home",
"number": "212 555-1234"
},
{
"type": "office",
"number": "646 555-4567"
}
],
"children": [],
"spouse": null
}
DbSchema 可以通过 Java Groovy 执行 JSON 命令,这与 MongoDB 原生语言非常相似。主要区别在于数组为 [val1,val2,...] 而映射为 [key1:val1,key2:val2,...] 。在 MongoDB 页面 上阅读有关可能命令的更多信息。
离开应用程序时,您可以将包含图表的项目保存到项目文件中。下次启动应用程序时,所有图表都将保持原样。
关系数据浏览
关系数据浏览是 DbSchema 中的一个工具,用于探索来自多个集合的数据。它的好处在于它可以从引用其他集合数据的集合中探索数据。
为了证明这一点,请考虑以下两个系列。我们看到“员工”集合通过“companyId”引用“公司”。这是数据库内部信息的规范化,因此与公司相关的信息仅存储一次,在公司集合中,并由员工引用。
{
"firstName": "John",
"lastName": "Smith",
"isAlive": true,
"age": 25,
"address": {
"streetAddress": "21 2nd Street",
"city": "New York", _
"state": "NY",
"postalCode": "10021-3100"
},
"phoneNumbers": [
{
"type": "home",
"number": "212 555-1234"
},
{
"type": "office",
"number": "646 555-4567"
}
],
"children": [],
"spouse": null
}
在下图中,我们有两个集合 employees 和 companies。我们通过将 companyId 拖放到 _id 字段上,创建了一个从员工到公司的 虚拟 外键。虚拟外键帮助我们根据当前选择的公司数据从员工中挖掘数据。
此外键将仅存在于 DbSchema 中。使用它,我们将能够浏览两个集合中的数据并查看每个员工的公司数据,而不必每次都执行单独的查询。随机数据生成器可以从图表中任何集合的右键单击弹出窗口启动,然后通过按第一个浏览框架标题中的外键箭头图标打开第二个框架。
请注意,我们无需在每次访问应用程序时都创建虚拟外键。 DbSchema 将布局(图表)和模式保存到项目文件中,下次访问应用程序时将打开该文件。
查询编辑器
除了图表和关系数据浏览,您还可以使用 MongoDB 的查询构建器和数据加载器。使用查询编辑器,您可以编辑和执行基于 Groovy 语言(一种与 Java 兼容的脚本语言)的查询。结果显示为嵌套表结构。
DbSchema 支持大多数关系数据库和 Mongo DB。该工具是商用的,试用期为两周。