sql >> データベース >  >> NoSQL >> MongoDB

MongoDB-データのインポート

    mongoimport を使用します データをMongoDBデータベースにインポートするユーティリティ。

    MongoDBはmongoimportを提供します JSON、CSV、またはTSVファイルをMongoDBデータベースにインポートするために使用できるユーティリティ。

    mongoimport binディレクトリにあります(例: / mongodb / bin またはあなたがそれをインストールしたところならどこでも)。

    データをインポートするには、新しいターミナル/コマンドプロンプトウィンドウを開き、mongoimportと入力します。 その後に、データベース名、コレクション名、ソースファイル名などのパラメータが続きます。

    mongoimport を実行できない場合 、 mongo を終了したことを確認してください ユーティリティ、または mongoexport を実行する前に新しいターミナル/コマンドプロンプトウィンドウを開きました 、別のユーティリティであるため。

    JSONファイルのインポート

    mongoimportを実行する例を次に示します。 JSONファイルをインポートします。

    以前に mongoexport を使用したことを覚えているかもしれません。 アーティスト をエクスポートするには JSONファイルへのコレクション。

    後で artists を削除しました コレクション全体。

    次に、そのコレクションをデータベースにインポートし直します。

    mongoimport --db music --file /data/dump/music/artists.json

    結果のメッセージ:

    2016-07-12T13:34:04.904+0700	no collection specified
    2016-07-12T13:34:04.905+0700	using filename 'artists' as collection
    2016-07-12T13:34:04.911+0700	connected to: localhost
    2016-07-12T13:34:04.968+0700	imported 13 documents
    

    コレクション名を指定しない場合、コレクションはファイルの名前(拡張子を差し引いたもの)に基づいて作成されます。

    それでは、 mongo に戻りましょう。 ターミナル/コマンドプロンプトウィンドウで、データベース内のコレクションのリストを取得します:

    show collections

    結果:

    artists
    musicians
    producers
    

    次に、復活したコレクションを照会します。

    db.artists.find()

    結果:

    { "_id" : 1, "artistname" : "AC/DC" }
    { "_id" : ObjectId("5781d7f248ef8c6b3ffb014d"), "artistname" : "The Kooks" }
    { "_id" : ObjectId("5780fbf948ef8c6b3ffb0149"), "artistname" : "The Tea Party" }
    { "_id" : ObjectId("5781d7f248ef8c6b3ffb014f"), "artistname" : "Gang of Four" }
    { "_id" : ObjectId("5781d7f248ef8c6b3ffb014e"), "artistname" : "Bastille" }
    { "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "artistname" : "Jorn Lande" }
    { "_id" : ObjectId("5781f85d48ef8c6b3ffb0150"), "artistname" : "Deep Purple", "albums" : [ { "album" : "Machine Head", "year" : 1972, "genre" : "Rock" }, { "album" : "Stormbringer", "year" : 1974, "genre" : "Rock" } ] }
    { "_id" : ObjectId("578214f048ef8c6b3ffb0159"), "artistname" : "Miles Davis", "albums" : [ { "album" : "Kind of Blue", "year" : 1959, "genre" : "Jazz" }, { "album" : "Bitches Brew", "year" : 1970, "genre" : "Jazz" } ] }
    { "_id" : ObjectId("578217c248ef8c6b3ffb015a"), "artistname" : "Robben Ford", "albums" : [ { "album" : "Bringing it Back Home", "year" : 2013, "genre" : "Blues" }, { "album" : "Talk to Your Daughter", "year" : 1988, "genre" : "Blues" } ] }
    { "_id" : 2, "artistname" : "Prince", "address" : { "street" : "Audubon Road", "city" : "Chanhassen", "state" : "Minnesota", "country" : "United States" } }
    { "_id" : 4, "artistname" : "Rush" }
    { "_id" : 3, "artistname" : "Moby", "albums" : [ { "album" : "Play", "year" : 1999, "genre" : "Electronica" }, { "album" : "Long Ambients 1: Calm. Sleep.", "year" : 2016, "genre" : "Ambient" } ] }
    { "_id" : ObjectId("578217c248ef8c6b3ffb015b"), "artistname" : "Snoop Dogg", "albums" : [ { "album" : "Tha Doggfather", "year" : 1996, "genre" : "Rap" }, { "album" : "Reincarnated", "year" : 2013, "genre" : "Reggae" } ] }
    

    コレクション名を指定

    --collectionを使用できます データを入れるコレクションの名前を指定する引数。

    別のファイルをインポートしましょう。ただし、今回はコレクション名を指定します。

    mongoimport --db music --collection jazz --file /data/dump/music/miles_davis.json

    結果のメッセージ:

    2016-07-12T14:09:01.793+0700	connected to: localhost
    2016-07-12T14:09:01.849+0700	imported 1 document
    

    ここで、 mongo に戻ります。 コレクションのリストを確認してください:

    show collections

    結果のメッセージ:

    artists
    jazz
    musicians
    producers
    

    そして最後に、 jazz にクエリを実行します コレクション:

    db.jazz.find().pretty()

    結果のメッセージ:

    {
    	"_id" : ObjectId("578214f048ef8c6b3ffb0159"),
    	"artistname" : "Miles Davis",
    	"albums" : [
    		{
    			"album" : "Kind of Blue",
    			"year" : 1959,
    			"genre" : "Jazz"
    		},
    		{
    			"album" : "Bitches Brew",
    			"year" : 1970,
    			"genre" : "Jazz"
    		}
    	]
    }
    

    CSVファイルのインポート

    --type csvを使用してCSVファイルをインポートできます 。

    CSVファイルにヘッダー行がある場合は、--headerlineを使用します mongoimport に伝える 最初の行を使用して、結果のドキュメントのフィールドの名前を決定します。

    CSVファイルにヘッダー行がない場合は、--fieldsを使用します フィールド名を設定するパラメータ。

    ヘッダー行あり

    ヘッダー行のあるドキュメントをインポートする例を次に示します。

    CSVファイルの内容:

    _id,albumname,artistname
    1,Killers,"Iron Maiden"
    2,Powerslave,"Iron Maiden"
    12,"Somewhere in Time","Iron Maiden"
    3,"Surfing with the Alien","Joe Satriani"
    10,"Flying in a Blue Dream","Joe Satriani"
    11,"Black Swans and Wormhole Wizards","Joe Satriani"
    6,"Out of the Loop","Mr Percival"
    7,"Suck on This",Primus
    8,"Pork Soda",Primus
    9,"Sailing the Seas of Cheese",Primus
    

    ファイルをインポートします:

    mongoimport --db music --collection catalog --type csv --headerline --file /data/dump/music/catalog.csv

    コレクションをクエリする:

    > db.catalog.find()
    { "_id" : 2, "albumname" : "Powerslave", "artistname" : "Iron Maiden" }
    { "_id" : 1, "albumname" : "Killers", "artistname" : "Iron Maiden" }
    { "_id" : 3, "albumname" : "Surfing with the Alien", "artistname" : "Joe Satriani" }
    { "_id" : 12, "albumname" : "Somewhere in Time", "artistname" : "Iron Maiden" }
    { "_id" : 10, "albumname" : "Flying in a Blue Dream", "artistname" : "Joe Satriani" }
    { "_id" : 6, "albumname" : "Out of the Loop", "artistname" : "Mr Percival" }
    { "_id" : 7, "albumname" : "Suck on This", "artistname" : "Primus" }
    { "_id" : 8, "albumname" : "Pork Soda", "artistname" : "Primus" }
    { "_id" : 11, "albumname" : "Black Swans and Wormhole Wizards", "artistname" : "Joe Satriani" }
    { "_id" : 9, "albumname" : "Sailing the Seas of Cheese", "artistname" : "Primus" }
    

    ヘッダー行なし

    別のCSVファイルがありますが、これにはヘッダー行がありません:

    Mutt Lange, 1948
    John Petrucci, 1967
    DJ Shadow, 1972
    George Clinton, 1941
    

    次に、それをインポートして、使用するフィールド名を指定します。

    mongoimport --db music --collection producers --type csv --fields name,born --file /data/dump/music/producers.csv

    コレクションをクエリする:

    > db.producers.find()
    { "_id" : 1, "name" : "Bob Rock" }
    { "_id" : ObjectId("5784a3a5dfad478c015f6b72"), "name" : "John Petrucci", "born" : 1967 }
    { "_id" : ObjectId("5784a3a5dfad478c015f6b73"), "name" : "Mutt Lange", "born" : 1948 }
    { "_id" : ObjectId("5784a3a5dfad478c015f6b74"), "name" : "George Clinton", "born" : 1941 }
    { "_id" : ObjectId("5784a3a5dfad478c015f6b75"), "name" : "DJ Shadow", "born" : 1972 }
    

    ObjectId フィールドは自動的に作成され、入力されています。

    また、インポートを実行する前に、このコレクションにはすでに1つのドキュメントがあります: {"_id":1、 "name": "Bob Rock"} 。したがって、インポートが単に追加されたことがわかります。 コレクションに(コレクションとそのすべてのコンテンツを置き換えるのではなく)

    同じ方法を使用してTSVファイルをインポートできます。 --type tsvを使用するだけです 。


    1. Redisはinit.dで手動で起動しますが、起動時には起動しません

    2. 集約データのMongoDB正しいスキーマ

    3. MongoDBの列の合計を取る

    4. MongoDB.Driver.Buildersグループ化して平均を取得する方法