我怎样才能发现一个mongo数据库的结构
我有一个Mongo数据库,我没有创build或架构,是否有一个很好的方式来反思数据库或打印出结构是什么开始处理什么types的数据被存储,数据types是如何嵌套等等?
实际上有一种工具可以帮助你在这里叫Variety:
http://blog.mongodb.org/post/21923016898/meet-variety-a-schema-analyzer-for-mongodb
你可以在这里查看Github的回购: https : //github.com/variety/variety
我可能应该警告你:
- 它使用MR完成其任务
- 它使用某些其他查询,可能会导致生产设置在性能方面接近停顿。
因此,我build议你在开发服务器或副本的某个隐藏节点上运行它。
根据文档的大小和深度,可能需要很长时间才能理解数据库的粗略结构,但最终会给出一个结果。
只需在mongo shell中运行以下命令即可查询数据库:
use mydb //this switches to the database you want to query show collections //this command will list all collections in the database db.collectionName.find().pretty() //this will show all documents in the database in a readable format; do the same for each collection in the database
您应该能够检查文档结构。
这将打印名称和types
var schematodo = db.collection_name.findOne() for (var key in schematodo) { print (key, typeof key) ; }
我会build议限制结果集,而不是发出无限制的查找命令。
use mydb db.collectionName.find().limit(10) var z = db.collectionName.find().limit(10) Object.keys(z[0]) Object.keys(z[1])
这将有助于您了解您的数据库结构或缺乏。
这是一个开源工具,我和我的朋友一起创build了这个工具 – https://pypi.python.org/pypi/mongoschema/
这是一个非常简单的用法的Python库。 你可以试试(甚至贡献)。
一种select是使用Mongoeye 。 它是类似于Variety的开源工具。
不同的是,Mongoeye是一个独立的程序(不需要Mongo Shell),并且具有更多的function(直方图,最常见的值等)。
几天前,我发现GUI客户端MongoDB指南针与一些很好的可视化。 请参阅产品概述 。 它来自于mongodb人,根据他们的文档:
MongoDB Compass旨在让用户轻松分析和理解MongoDB中的数据收集内容。