MongoDB データのインポート

MongoDBMongoDBBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、JSON 形式と CSV 形式の両方を使って MongoDB にデータをインポートする方法を学びます。最初のステップでは JSON ファイルのインポートを扱い、サンプル JSON ファイルを作成して mongoimport コマンドを使って MongoDB データベースにインポートします。2 番目のステップでは CSV データのインポートに焦点を当て、CSV ファイルを作成して mongoimport コマンドを使って MongoDB に読み込む方法を案内します。この実験ではまた、インポート結果を確認し、エラーを処理し、インポートされたデータを検証するステップも含まれており、MongoDB のインポート プロセスを包括的に理解することができます。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL mongodb(("MongoDB")) -.-> mongodb/BasicOperationsGroup(["Basic Operations"]) mongodb(("MongoDB")) -.-> mongodb/QueryOperationsGroup(["Query Operations"]) mongodb(("MongoDB")) -.-> mongodb/ErrorHandlingGroup(["Error Handling"]) mongodb(("MongoDB")) -.-> mongodb/DataImportExportGroup(["Data Import Export"]) mongodb/BasicOperationsGroup -.-> mongodb/start_mongodb_shell("Start MongoDB Shell") mongodb/BasicOperationsGroup -.-> mongodb/create_database_collection("Create Database and Collection") mongodb/QueryOperationsGroup -.-> mongodb/find_documents("Find Documents") mongodb/QueryOperationsGroup -.-> mongodb/query_with_conditions("Query with Conditions") mongodb/ErrorHandlingGroup -.-> mongodb/handle_write_errors("Handle Write Errors") mongodb/DataImportExportGroup -.-> mongodb/import_data_json("Import Data from JSON") mongodb/DataImportExportGroup -.-> mongodb/import_data_csv("Import Data from CSV") subgraph Lab Skills mongodb/start_mongodb_shell -.-> lab-422086{{"MongoDB データのインポート"}} mongodb/create_database_collection -.-> lab-422086{{"MongoDB データのインポート"}} mongodb/find_documents -.-> lab-422086{{"MongoDB データのインポート"}} mongodb/query_with_conditions -.-> lab-422086{{"MongoDB データのインポート"}} mongodb/handle_write_errors -.-> lab-422086{{"MongoDB データのインポート"}} mongodb/import_data_json -.-> lab-422086{{"MongoDB データのインポート"}} mongodb/import_data_csv -.-> lab-422086{{"MongoDB データのインポート"}} end

JSON ファイルのインポート

このステップでは、mongoimport コマンドを使って JSON ファイルを MongoDB にインポートする方法を学びます。JSON(JavaScript Object Notation)は、MongoDB が簡単にインポートできる人気のあるデータ交換形式です。

まず、いくつかのデータを含むサンプル JSON ファイルを作成しましょう。本のシンプルなデータセットを使います。

ターミナルを開き、プロジェクト ディレクトリに移動します。

cd ~/project

nano を使って books.json という名前のファイルを作成します。

nano books.json

次の JSON コンテンツを追加します。

[
  {
    "title": "MongoDB Basics",
    "author": "Jane Smith",
    "year": 2023
  },
  {
    "title": "Python Programming",
    "author": "John Doe",
    "year": 2022
  },
  {
    "title": "Data Science Handbook",
    "author": "Alice Johnson",
    "year": 2021
  }
]

Ctrl+X を押してから Y を押し、そして Enter を押すことでファイルを保存します。

次に、MongoDB シェルを起動します。

mongosh

新しいデータベースを作成し、それに切り替えます。

use library_database

MongoDB シェルを終了します。

exit

JSON ファイルを books コレクションにインポートします。

mongoimport --db library_database --collection books --file ~/project/books.json --jsonArray

サンプル出力:

[#######......] 2/3 documents
2023-xx-xx 00:00:00.000 [############] library_database.books 3/3 documents

mongosh を使ってドキュメントの数を数えることでインポートを検証しましょう。

mongosh library_database --eval "db.books.countDocuments()"

サンプル出力:

3

CSV データのインポート

このステップでは、mongoimport コマンドを使って CSV(カンマ区切り値)ファイルを MongoDB にインポートする方法を学びます。CSV は表形式のデータを格納するための一般的な形式です。

まず、図書館会員に関するいくつかのデータを含むサンプル CSV ファイルを作成しましょう。

プロジェクト ディレクトリに移動します。

cd ~/project

nano を使って library_members.csv という名前のファイルを作成します。

nano library_members.csv

次の CSV コンテンツを追加します。

name,age,membership_type,join_date
John Doe,35,Premium,2023-01-15
Jane Smith,28,Standard,2022-11-20
Alice Johnson,42,Gold,2021-06-10
Bob Williams,55,Premium,2022-03-05

Ctrl+X を押してから Y を押し、そして Enter を押すことでファイルを保存します。

MongoDB シェルを起動します。

mongosh

新しいデータベースを作成し、それに切り替えます。

use library_database

MongoDB シェルを終了します。

exit

CSV ファイルを members コレクションにインポートします。

mongoimport --db library_database --collection members --type csv --file ~/project/library_members.csv --headerline

--headerline フラグは、CSV の最初の行をフィールド名として MongoDB に使用するように指示します。

サンプル出力:

[#######......] 2/4 documents
2023-xx-xx 00:00:00.000 [############] library_database.members 4/4 documents

mongosh を使ってドキュメントの数を数え、最初のいくつかのレコードを表示することでインポートを検証しましょう。

mongosh library_database --eval "db.members.countDocuments()"

サンプル出力:

4

次に、インポートされたドキュメントを表示します。

mongosh library_database --eval "db.members.find().limit(2)"

サンプル出力:

[
  {
    _id: ObjectId("..."),
    name: 'John Doe',
    age: 35,
    membership_type: 'Premium',
    join_date: '2023-01-15'
  },
  {
    _id: ObjectId("..."),
    name: 'Jane Smith',
    age: 28,
    membership_type: 'Standard',
    join_date: '2022-11-20'
  }
]

インポート結果の確認

このステップでは、MongoDB にインポートしたデータを検証して調べる方法を学びます。インポートされたコレクションとその内容を確認するために、さまざまな MongoDB コマンドを使用します。

MongoDB シェルを起動します。

mongosh library_database

まず、データベース内のすべてのコレクションを一覧表示しましょう。

show collections

サンプル出力:

books
members

次に、データをもっと詳細に調べましょう。インポートされたコレクションを確認して照会するために、さまざまな方法を使用します。

各コレクション内のドキュメントの数を数えます。

db.books.countDocuments()
db.members.countDocuments()

サンプル出力:

3
4

クエリ フィルターを使用して特定のドキュメントを検索しましょう。

// 2022年以降に出版された本を検索
db.books.find({ year: { $gt: 2022 } })

サンプル出力:

[
  {
    _id: ObjectId("..."),
    title: 'MongoDB Basics',
    author: 'Jane Smith',
    year: 2023
  }
]

次に、特定の会員タイプの会員を照会します。

// プレミアム会員を検索
db.members.find({ membership_type: "Premium" })

サンプル出力:

[
  {
    _id: ObjectId("..."),
    name: 'John Doe',
    age: 35,
    membership_type: 'Premium',
    join_date: '2023-01-15'
  },
  {
    _id: ObjectId("..."),
    name: 'Bob Williams',
    age: 55,
    membership_type: 'Premium',
    join_date: '2022-03-05'
  }
]

コレクションをエクスポートしてその内容を確認します。

exit

mongoexport を使用して、members コレクションを JSON ファイルにエクスポートします。

mongoexport --db library_database --collection members --out ~/project/exported_members.json

エクスポートされたファイルを表示します。

cat ~/project/exported_members.json

これにより、MongoDB の外部でインポートされたデータを確認できます。

インポート エラーの対処

このステップでは、MongoDB と mongoimport を使用しているときの一般的なインポート エラーをどのように対処するかを学びます。これらのエラーを理解することで、データインポートの問題をトラブルシューティングすることができます。

まず、いくつかのインポート チャレンジを含むサンプル ファイルを作成しましょう。

cd ~/project

意図的に問題のある CSV ファイルを作成します。

nano problematic_members.csv

次のコンテンツを追加します。

name,age,membership_type,join_date
John Doe,thirty-five,Premium,2023-01-15
Jane Smith,28,Standard,invalid-date
Alice Johnson,42,Gold,2021-06-10

意図的なエラーに注意してください。

  • "thirty-five" は有効な数値ではありません
  • "invalid-date" は適切な日付形式ではありません

このファイルをインポートしてみましょう。

mongoimport --db library_database --collection problematic_members --type csv --file ~/project/problematic_members.csv --headerline

おそらく次のようなエラー メッセージが表示されます。

2024-xx-xx 00:00:00.000 [#######] Failed: document validation error

このようなエラーを処理するには、--stopOnError--jsonArray フラグを使用します。

mongoimport --db library_database --collection problematic_members --type csv --file ~/project/problematic_members.csv --headerline --stopOnError

ファイルのクリーンなバージョンを作成します。

nano clean_members.csv

修正済みのコンテンツを追加します。

name,age,membership_type,join_date
John Doe,35,Premium,2023-01-15
Jane Smith,28,Standard,2022-11-20
Alice Johnson,42,Gold,2021-06-10

次に、検証付きでインポートします。

mongoimport --db library_database --collection clean_members --type csv --file ~/project/clean_members.csv --headerline

インポートを検証します。

mongosh library_database --eval "db.clean_members.find()"

もう 1 つの一般的なエラー、つまり不正な JSON 形式を示しましょう。

nano invalid_books.json

意図的に構文が不備な JSON を追加します。

[
  {
    "title": "MongoDB Basics",
    "author": "Jane Smith",
    "year": 2023
  },
  {
    "title": "Incomplete Book"
    // カンマとクロージング ブレースが欠けています
  }
]

このファイルをインポートしてみましょう。

mongoimport --db library_database --collection invalid_books --file ~/project/invalid_books.json --jsonArray

JSON の解析に関するエラーが表示されます。

有効な JSON ファイルを作成します。

nano valid_books.json

正しい JSON を追加します。

[
  {
    "title": "MongoDB Basics",
    "author": "Jane Smith",
    "year": 2023
  },
  {
    "title": "Complete Book",
    "author": "John Doe",
    "year": 2022
  }
]

有効な JSON をインポートします。

mongoimport --db library_database --collection valid_books --file ~/project/valid_books.json --jsonArray

インポートされたデータの検証

この最後のステップでは、さまざまな技術とツールを使って、MongoDB にインポートしたデータを十分に検証する方法を学びます。

MongoDB シェルを起動します。

mongosh library_database

まず、包括的なデータ検証を行いましょう。

// コレクションの合計数を確認
show collections

サンプル出力:

books
members
clean_members
valid_books

各コレクション内のドキュメント数を数えます。

db.books.countDocuments()
db.members.countDocuments()
db.clean_members.countDocuments()
db.valid_books.countDocuments()

高度な照会を行ってデータの整合性を検証します。

// 2022年以降に出版された本を検索
db.books.find({ year: { $gt: 2022 } })

// 30歳以上の会員を検索
db.members.find({ age: { $gt: 30 } })

MongoDB シェルを終了します。

exit

外部検証のために mongoexport を使ってコレクションをエクスポートします。

## books コレクションをエクスポート
mongoexport --db library_database --collection books --out ~/project/exported_books.json

## members コレクションをエクスポート
mongoexport --db library_database --collection members --out ~/project/exported_members.json

エクスポートされたファイルを検証します。

## エクスポートされた books を確認
head -n 5 ~/project/exported_books.json

## エクスポートされた members を確認
head -n 5 ~/project/exported_members.json

データの整合性チェックを行います。

## コレクションのサイズを比較
wc -l ~/project/exported_books.json
wc -l ~/project/exported_members.json

オプション:JSON の検証に jq を使用します。

## まだインストールされていない場合は jq をインストール
sudo apt-get update
sudo apt-get install -y jq

## JSON 構造を検証
jq '.' ~/project/exported_books.json
jq '.' ~/project/exported_members.json

簡単な検証スクリプトを作成しましょう。

nano ~/project/verify_import.sh

次のコンテンツを追加します。

#!/bin/bash

## MongoDB インポートの検証
echo "Checking MongoDB Collections:"
mongosh library_database --quiet --eval "
    print('Books count: ' + db.books.countDocuments());
    print('Members count: ' + db.members.countDocuments());
    print('Clean Members count: ' + db.clean_members.countDocuments());
    print('Valid Books count: ' + db.valid_books.countDocuments());
"

スクリプトを実行可能にします。

chmod +x ~/project/verify_import.sh

検証スクリプトを実行します。

~/project/verify_import.sh

まとめ

この実験では、mongoimport コマンドを使って JSON と CSV データを MongoDB にインポートする方法を学びました。JSON ファイルの場合、サンプルの books.json ファイルを作成し、library_database データベースにインポートし、ドキュメントを数えることでインポートを検証しました。CSV データの場合、library_members.csv ファイルを作成し、同じデータベースにインポートし、インポート結果を確認しました。また、インポート エラーの対処方法とインポートされたデータの検証方法も学びました。