web-dev-qa-db-ja.com

robomongoを使用してMongodbからjsonをエクスポートする方法

だから私はMongoDBについてあまり知りません。私はRoboMongoを使ってMongoDBに接続します。私がする必要があるのはこれです - そのMongoDBにコレクションがあります。ファイルに保存できるように、そのコレクションからデータをエクスポートしたいと思います。

私はインターフェースを使ってコレクションからのデータをテキストとして開き、CTRL + Aをしてテキストファイルに貼り付けました。しかし、すべてのデータがコピーされているわけではなく、テキストデータにはJSONを自然に破壊する多くのコメントがあることもわかりました。

RoboMongoにクリーンなエクスポートができるようにExport As JSON機能があるかどうか疑問に思います。

どんなポインタでも大歓迎です!

87

tojsonを使用すると、 MongoDBシェルスクリプト で各レコードをJSONに変換できます。

RoboMongoでこのスクリプトを実行します。

var cursor = db.getCollection('foo').find({}, {});
while(cursor.hasNext()) {
    print(tojson(cursor.next()))
}

これはすべての結果をJSONのような配列として出力します。

結果は実際にはJSONではありません。日付やオブジェクトIDなどの一部のタイプは、JavaScript関数呼び出しとして出力されます(例:ISODate("2016-03-03T12:15:49.996Z")

大規模な結果セットではあまり効率的ではないかもしれませんが、クエリを制限することができます。あるいは、 mongoexport を使用することもできます。

48
Florian Winter

Robomongoのシェル機能はこの問題を解決します。私の場合は、CSVフォーマットとしていくつかの列が必要でした。

var cursor = db.getCollection('Member_details').find({Category: 'CUST'},{CustomerId :1,Name :1,_id:0})

while (cursor.hasNext()) {
    var record = cursor.next();   
    print(record.CustomerID + "," + record.Name)
}

Output : -------

334, Harison
433, Rechard
453, Michel
533, Pal
26
Anish Abraham

そこにはいくつかのMongoDB GUIがあり、そのうちのいくつかはデータエクスポートのための組み込みサポートを持っています。 MongoDBのGUIの包括的なリストは http://mongodb-tools.com にあります。

コレクション全体をエクスポートするのではなく、クエリの結果をエクスポートすることについて質問しました。 Give T MongoChef MongoDB GUI 試してみて、このツールはあなたの特定のユースケースをサポートします。

19
Tomek

手っ取り早い方法:クエリをdb.getCollection('collection').find({}).toArray()と書き、Copy JSONを右クリックするだけです。選択したエディタにデータを貼り付けます。

enter image description here

17
öbl

シェルでこのコマンドを実行しないでください。データベース名、コレクション名、およびファイル名を指定してコマンドプロンプトでこのスクリプトを入力します。すべてプレースホルダが置き換えられます。

mongoexport --db (Database name) --collection (Collection Name) --out (File name).json

わたしにはできる。

9

スプレッドシートのように「ファイルにエクスポート」と言いますか。 .csvが好きですか?

IMOこれはRobo 3T(以前のrobomongo)でこれを行う最も簡単な方法です。

  1. Robo 3T GUIの右上には、「結果をテキストモードで表示」ボタンがあります。それをクリックして、すべてをコピーします。

  2. すべてこのウェブサイトに貼り付けてください。 https://json-csv.com/

  3. ダウンロードボタンをクリックすると、スプレッドシートに表示されます。

robo 3Tにエクスポート機能があることを願います。

7
russiansummer

Robomongoにはそのような機能はないと思います。そのため、特定のCollectionのmongoexportとしてmongodb関数を使用することをお勧めします。

http://docs.mongodb.org/manual/reference/program/mongoexport/#export-in-json-format

あなたがバックアップソリューションを探しているのであればしかし、使用することをお勧めします

mongodump / mongorestore
7
henrily

Anishの答えを拡張して、printステートメントの中でそれらを定義しなければならないのに対して、すべてのフィールドを自動的に出力するために私がどんな質問にでも適用できる何かが欲しかったです。それはおそらく単純化することができますが、これはすばやく汚いもので、とてもうまくいきます。

var cursor = db.getCollection('foo').find({}, {bar: 1, baz: 1, created_at: 1, updated_at: 1}).sort({created_at: -1, updated_at: -1});

while (cursor.hasNext()) {
    var record = cursor.next();
    var output = "";
    for (var i in record) {
      output += record[i] + ",";
    };
    output = output.substring(0, output.length - 1);
    print(output);
}
5
Mark Shust

mongoimport を使いたい場合は、次のようにエクスポートします。

db.getCollection('tables')
  .find({_id: 'q3hrnnoKu2mnCL7kE'})
  .forEach(function(x){printjsononeline(x)});
3
shapiromatron

Robomongo Shellスクリプトを使う:

//on the same db
var cursor = db.collectionname.find();

while (cursor.hasNext()) {
    var record = cursor.next();   
    db.new_collectionname.save(record);
}

Mongodbのexportとimportコマンドを使う

mongoexportコマンドに--jsonArrayパラメータ/フラグを追加すると、結果が単一のjson配列としてエクスポートされます。

その後、インポート時に--jsonArrayフラグをもう一度指定するだけです。

または、ファイル内の最初と最後の配列括弧[]を削除すると、変更後のエクスポートされたファイルは--jsonArrayフラグなしでmongoimportコマンドでインポートされます。

ここでエクスポートの詳細: https://docs.mongodb.org/manual/reference/program/mongoexport/#cmdoption--jsonArray

ここにインポート: https://docs.mongodb.org/manual/reference/program/mongoimport/#cmdoption--jsonArray

2
Herald Smit

私はこれと同じ問題を抱えていたし、robomongo(Robo 3T 1.1.1)でスクリプトを実行しても値をコピーすることはできず、エクスポートオプションもありませんでした。これを達成するための最良の方法は、mongoexportを使用することです。mongodbがローカルにインストールされている場合は、mongoexportを使用して任意のサーバー上のデータベースに接続し、データを抽出することができます。

リモートサーバーのデータとcsv出力ファイルに接続するには、コマンドラインで次のmongoexportを実行します。

mongoexport --Host HOSTNAME --port PORT --username USERNAME --password "PASSWORD" --collection COLLECTION_NAME --db DATABASE_NAME --out OUTPUTFILE.csv --type=csv --fieldFile fields.txt

fieldFile:目的の列を抽出するのに役立ちます。たとえば、fields.txtの内容は次のようになります。

ユーザーID

列 'userId'の値のみを抽出する

リモートサーバー上のデータ、json出力ファイル:

mongoexport --Host HOST_NAME --port PORT --username USERNAME --password "PASSWORD" --collection COLECTION_NAME --db DATABASE_NAME --out OUTPUT.json

これにより、すべてのフィールドがjsonファイルに抽出されます。

localhost上のデータ(mongodbはlocalhost上で実行されているはずです)

mongoexport --db DATABASE_NAME --collection COLLECTION --out OUTPUT.json

参照: https://docs.mongodb.com/manual/reference/program/mongoexport/#use

1

溶液:
mongoexport --db test - コレクショントラフィック--out traffic.json

enter image description here


ここで、
データベース - >モックサーバー
コレクション名 - > api_defs
出力ファイル名 - > childChoreRequest.json

0
amoljdv06