1. ホーム
  2. mongodb

[解決済み] mongo のクエリの出力を csv ファイルにリダイレクトする。

2022-12-24 06:39:18

質問

32ビットWindows7マシンでMongoDB 2.2.2を使っています。私は.jsファイルで複雑な集約クエリを持っています。私はシェルでこのファイルを実行し、CSVファイルに出力を指示する必要があります。私はクエリがquot;flat" json(ネストされたキーなし)を返すことを確認し、それは本質的にきちんとしたcsvに変換されます。



私が知っているのは load()eval() . eval() は、クエリ全体をシェルに貼り付ける必要があり、そのため printjson() だけです。そして、2つ目の方法。 load() ...これは、画面に出力を表示し、再びjson形式で表示します。



Mongoがこのjsonからcsvへの変換を行うことができる方法はありますか?(私はデータでチャートを準備するためにcsvファイルが必要です)。私は考えています。



1. mongoにこのための組み込みコマンドがあるかどうかですが、今は見当たりません。

2. Mongoは私のためにそれを行うことはできません。私はせいぜいjson出力をファイルに送ることができ、それから私は自分でcsvに変換する必要があります。

3. Mongo は json 出力を一時的なコレクションに送ることができ、その中身は簡単に mongoexported を csv フォーマットに変換できます。しかし、map-reduceクエリだけが出力コレクションをサポートしていると思います。それは正しいですか?私は集計クエリのためにそれを必要とします。

どんな助けでもありがとうございます :)

どのように解決するのですか?

私はこの質問が古いことを知っていますが、複雑なクエリをcsvにエクスポートしようとして1時間を費やしたので、私は私の考えを共有したいと思いました。 最初に、私はjsonからcsvへのコンバータのいずれかを動作させることができませんでした(しかし この は期待できそうでしたが)。 結局、mongo スクリプトで csv ファイルを手動で書き込むことにしました。

これは単純なバージョンですが、本質的に私が行ったことです。

print("name,id,email");
db.User.find().forEach(function(user){
  print(user.name+","+user._id.valueOf()+","+user.email);
});

これはクエリを標準出力にパイプしただけです。

mongo test export.js > out.csv

ここで test は私が使っているデータベースの名前です。