私が作成または設計していないMongoデータベースがあります。データベースをイントロスペクトするか、構造が何であるかを出力して、どのタイプのデータが格納されているか、データタイプがどのようにネストされているかを把握するための良い方法はありますか?など?
10 に答える
mongo シェルで次のコマンドを実行して、データベースにクエリを実行するだけです。
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
その後、文書構造を調べることができるはずです。
Variety と呼ばれる、ここで役立つツールが実際にあります。
http://blog.mongodb.org/post/21923016898/meet-variety-a-schema-analyzer-for-mongodb
You can view the Github repo for it here: https://github.com/variety/variety
I should probably warn you that:
- It uses MR to accomplish its tasks
- It uses certain other queries that could bring a production set-up to a near halt in terms of performance.
As such I recommend you run this on a development server or a hidden node of a replica or something.
Depending on the size and depth of your documents it may take a very long time to understand the rough structure of your database through this but it will eventually give one.
これにより、名前とそのタイプが出力されます
var schematodo = db.collection_name.findOne()
for (var key in schematodo) { print (key, typeof key) ; }
無制限の find コマンドを発行するよりも、結果セットを制限することをお勧めします。
use mydb
db.collectionName.find().limit(10)
var z = db.collectionName.find().limit(10)
Object.keys(z[0])
Object.keys(z[1])
これは、データベース構造またはその欠如を理解するのに役立ちます。
これは、私が友人と一緒に作成したオープンソース ツールです - https://pypi.python.org/pypi/mongoschema/
これは非常にシンプルな使い方の Python ライブラリです。試してみることができます (貢献することもできます)。