32ビットWindows7マシン用にMongoDB 2.2.2を使用しています。 .jsファイルに複雑な集計クエリがあります。このファイルをシェルで実行し、出力をCSVファイルに送信する必要があります。クエリが「フラットな」json(ネストされたキーなし)を返すようにするため、本質的にきちんとしたcsvに変換できます。load()
およびeval()
について知っています。 eval()
では、クエリ全体をシェルに貼り付ける必要があり、スクリプト内ではprintjson()
のみが許可されますが、csvが必要です。そして、2番目の方法:load()
...出力を画面に出力し、再びjson形式で出力します。
jgoからcsvへの変換をMongoで実行できる方法はありますか? (データのチャートを作成するにはcsvファイルが必要です)。私は考えています:
1。どちらのmongoにもこのコマンドが組み込まれていますが、今は見つけることができません。
2。 Mongoは私にはできません。私はせいぜいcsvに変換する必要があるファイルにjson出力を最大で送ることができます。
3。 Mongoは、jsonの出力を一時的なコレクションに送信できます。そのコンテンツは、簡単にmongoexported
からcsv形式に変換できます。ただし、map-reduceクエリのみが出力コレクションをサポートすると思います。そうですか?集計クエリに必要です。
助けてくれてありがとう:)
この質問は古いことは知っていますが、複雑なクエリをcsvにエクスポートしようとして1時間を費やし、考えを共有したいと思いました。最初に、jsonからcsvへのコンバーターを機能させることができませんでした(ただし、 this 1つは有望に見えました)。最終的に私がやったのは、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
は、使用するデータベースの名前です。
Mongoの組み込みエクスポートは、フォーマットの日付、隠しデータ型などのデータ操作が必要でない限り、正常に機能しています。
次のコマンドは魅力として機能します。
mongoexport -h localhost -d databse -c collection --type=csv
--fields erpNum,orderId,time,status
-q '{"time":{"$gt":1438275600000}, "status":{"$ne" :"Cancelled"}}'
--out report.csv
ここにあなたが試すことができるものがあります:
print("id,name,startDate")
cursor = db.<collection_name>.find();
while (cursor.hasNext()) {
jsonObject = cursor.next();
print(jsonObject._id.valueOf() + "," + jsonObject.name + ",\"" + jsonObject.stateDate.toUTCString() +"\"")
}
「export.js」と言うファイルに保存します。次のコマンドを実行します。
mongo <Host>/<dbname> -u <username> -p <password> export.js > out.csv
他の回答の拡張:
@GEverdingの答えが最も柔軟であることがわかりました。集約でも機能します。
test_db.js
print("name,email");
db.users.aggregate([
{ $match: {} }
]).forEach(function(user) {
print(user.name+","+user.email);
}
});
次のコマンドを実行して、結果をエクスポートします。
mongo test_db < ./test_db.js >> ./test_db.csv
残念ながら、CSVファイルに追加のテキストが追加されるため、使用する前にファイルを処理する必要があります。
MongoDB Shell version: 3.2.10
connecting to: test_db
ただし、--quiet
フラグを渡すことで、mongo Shellがこれらのコメントを出力しないようにし、要求した内容だけを出力できます。
mongo --quiet test_db < ./test_db.js >> ./test_db.csv
this をご覧ください
mongoシェルからファイルへの出力用。 mongos Shellからのcsvの出力はサポートされていません。 JavaScriptを自分で記述するか、利用可能な多くのコンバーターのいずれかを使用する必要があります。たとえば、Googleは「jsonをcsvに変換」します。