MongoDBのインポートユーティリティ– mongoimport
–CSVデータを配列としてインポートできる新しいパラメーターを導入しました。
--useArrayIndexFields
パラメータは、CSVまたはTSVファイルをインポートするときに、フィールドの自然数を配列インデックスとして解釈します。
例
tags.csv
というCSVファイルがあるとします。 これは次のようになります:
tags.0,tags.1,tags.2,tags.3
html,css,sql,xml
--useArrayIndexFields
を使用してインポートできます パラメータ。これにより、mongoimport
が発生します。 列ヘッダーの数値を配列インデックスとして解釈します。
例:
mongoimport --db=krankykranes --type=csv --headerline --useArrayIndexFields --file=tags.csv
出力:
2021-01-03T20:55:44.284+1000 no collection specified 2021-01-03T20:55:44.284+1000 using filename 'tags' as collection 2021-01-03T20:55:44.297+1000 connected to: mongodb://localhost/ 2021-01-03T20:55:44.330+1000 1 document(s) imported successfully. 0 document(s) failed to import.
コレクション名を指定しなかったため、tags
というコレクションが作成されました。 (ファイルの名前に基づいて)次に、ドキュメントをインポートしました。
mongoシェルにジャンプして、コレクションを確認しましょう。
db.tags.find()
結果:
{ "_id" : ObjectId("5ff1a2b0300ed79d9836882f"), "tags" : [ "html", "css", "sql", "xml" ] }
CSVデータがJSON配列としてインポートされていることがわかります。
ここでも、より適切なフォーマットが使用されているため、配列が見やすくなる可能性があります。
db.tags.find().pretty()
結果:
{ "_id" : ObjectId("5ff1a2b0300ed79d9836882f"), "tags" : [ "html", "css", "sql", "xml" ] }
他のCSVデータと組み合わせる
前の例のCSVファイルは、配列データのみで構成されていました。ただし、ファイルに他のデータを含めることもできます。
articles.csv
というCSVファイルの例を次に示します。 他のデータが含まれています。
_id,title,body,tags.0,tags.1,tags.2,tags.3 1.0,Web,blah,html,css,sql,xml 2.0,Animals,blah 2,cats,dogs 3.0,Plants,blah 3,trees 4.0,Oceans,blah 4
そのファイルをインポートしましょう:
mongoimport --db=krankykranes --type=csv --headerline --useArrayIndexFields --file=articles.csv
出力:
2021-01-03T21:14:38.286+1000 no collection specified 2021-01-03T21:14:38.287+1000 using filename 'articles' as collection 2021-01-03T21:14:38.336+1000 connected to: mongodb://localhost/ 2021-01-03T21:14:38.407+1000 4 document(s) imported successfully. 0 document(s) failed to import.
それでは、mongoシェルにジャンプして、コレクションを確認しましょう。
db.articles.find()
結果:
{ "_id" : 1, "title" : "Web", "body" : "blah", "tags" : [ "html", "css", "sql", "xml" ] } { "_id" : 3, "title" : "Plants", "body" : "blah 3", "tags" : [ "trees" ] } { "_id" : 4, "title" : "Oceans", "body" : "blah 4" } { "_id" : 2, "title" : "Animals", "body" : "blah 2", "tags" : [ "cats", "dogs" ] }
少しきれいにしましょう。
db.articles.find().pretty()
結果:
{ "_id" : 1, "title" : "Web", "body" : "blah", "tags" : [ "html", "css", "sql", "xml" ] } { "_id" : 3, "title" : "Plants", "body" : "blah 3", "tags" : [ "trees" ] } { "_id" : 4, "title" : "Oceans", "body" : "blah 4" } { "_id" : 2, "title" : "Animals", "body" : "blah 2", "tags" : [ "cats", "dogs" ] }
したがって、ドキュメントが完全なJSON / BSONドキュメントとして作成され、関連データの配列が作成されていることがわかります。
ドキュメント4の配列が作成されていないことに注意してください。これは、CSVファイルに配列データが提供されていないためです。したがって、空の配列でフィールドを作成するのではなく、フィールドや配列を作成しませんでした。