MongoDBデータベースの作成と基本操作

MongoDBデータベースの作成

多くのリレーショナルデータベースでは、まずデータベースを作成し、その中でテーブルを作成しデータを挿入する必要があります。しかし、MongoDBでは、データを挿入時に存在しないデータベースを指定すると、MongoDBが自動的にそのデータベースを作成します。そのため、MongoDBでデータベースを作成するのは非常に簡単で、データを挿入時に新しいデータベース名を指定するだけです。


from pymongo import MongoClient

# MongoDBに接続
db_client = MongoClient("mongodb://localhost:27017/")
# データベースを選択
target_db = db_client["sample_database"]
# コレクションを選択
data_collection = target_db["users"]
# ドキュメントを挿入
user_data = { "username": "Taro", "location": "Tokyo Street 123" }
insert_result = data_collection.insert_one(user_data)

上記のコードでは、まずMongoDBデータベースに接続し、新しいデータベースsample_databaseを選択します。次に、usersコレクションを選択し、ドキュメントを挿入します。sample_databaseが存在しない場合、MongoDBは自動的にそのデータベースを作成します。

注意点として、MongoDBではコレクションは動的であり、コレクション内のフィールドはいつでも追加または削除できます。そのため、データベースを作成する際にフィールドやスキーマを指定する必要はありません。代わりに、MongoDBは挿入されたドキュメントに基づいて自動的にフィールドを作成します。

データベースの作成

MongoDBでデータベースを作成するのは簡単です。MongoDBに接続後、PyMongoライブラリが提供するMongoClientクラスを使用して存在しないデータベースを選択するだけです。そのデータベースにデータを挿入すると、MongoDBは自動的にデータベースを作成します。


from pymongo import MongoClient

# MongoDBに接続
connection = MongoClient("mongodb://localhost:27017/")

# 存在しないデータベースを選択
my_database = connection["company_db"]

# データを挿入してデータベースを自動作成
employee_collection = my_database["employees"]
employee_info = { "name": "Sato", "department": "Engineering", "join_date": "2023-01-15" }
insert_status = employee_collection.insert_one(employee_info)

この例では、存在しないデータベースcompany_dbを選択し、そこにデータを挿入しています。データを挿入すると、MongoDBは自動的にデータベースを作成します。もしそのデータベースが既に存在する場合は、作成されません。

データベースの存在確認

PyMongoでは、以下のコードを使用してデータベースが存在するかどうかを確認できます。


from pymongo import MongoClient

# MongoDBに接続
connector = MongoClient("mongodb://localhost:27017/")

# データベースリストを取得
available_dbs = connector.list_database_names()

# データベースが存在するか確認
if "company_db" in available_dbs:
    print("データベースは存在します。")
else:
    print("データベースは存在しません。")

上記のコードでは、まずMongoDBデータベースに接続し、list_database_names()メソッドを使用してデータベースリストを取得します。次に、company_dbがデータベースリストに存在するか確認し、存在する場合はデータベースが存在することを示します。存在しない場合は、データベースが存在しないことを示します。

コレクションの作成

MongoDBでは、コレクションはMongoDB内のオブジェクトであり、リレーショナルデータベースのテーブルに似ています。PyMongoライブラリでは、MongoClientクラスのインスタンスを使用してデータベースを選択し、そのデータベースのcreate_collection()メソッドを使用してコレクションを作成できます。


from pymongo import MongoClient

# MongoDBに接続
db_connector = MongoClient("mongodb://localhost:27017/")

# データベースを選択
main_db = db_connector["company_db"]

# コレクションを作成
staff_collection = main_db["staff_members"]

この例では、company_dbという名前のデータベースを選択し、そのデータベースのcreate_collection()メソッドを使用してstaff_membersという名前のコレクションを作成しています。コレクションが既に存在する場合は、作成されません。

基本操作:追加、削除、更新、検索

PyMongoでは、以下のコードを使用して追加、削除、更新、検索などの基本操作を行うことができます。

データの追加


from pymongo import MongoClient

# MongoDBに接続
db_client = MongoClient("mongodb://localhost:27017/")

# データベースを選択
my_db = db_client["company_db"]

# コレクションを選択
staff_collection = my_db["staff_members"]

# ドキュメントを挿入
new_staff = { "name": "Tanaka", "position": "Developer", "skills": ["Python", "JavaScript"] }
insert_result = staff_collection.insert_one(new_staff)

上記のコードでは、まずMongoDBデータベースに接続し、company_dbデータベースを選択します。次に、staff_membersコレクションを選択し、ドキュメントを挿入します。

データの検索


from pymongo import MongoClient

# MongoDBに接続
db_client = MongoClient("mongodb://localhost:27017/")

# データベースを選択
my_db = db_client["company_db"]

# コレクションを選択
staff_collection = my_db["staff_members"]

# すべてのドキュメントを検索
for staff in staff_collection.find():
    print(staff)

上記のコードでは、find()メソッドを使用してすべてのドキュメントを検索し、forループを使用して結果を反復処理します。

データの更新


from pymongo import MongoClient

# MongoDBに接続
db_client = MongoClient("mongodb://localhost:27017/")

# データベースを選択
my_db = db_client["company_db"]

# コレクションを選択
staff_collection = my_db["staff_members"]

# ドキュメントを更新
search_criteria = { "name": "Tanaka" }
update_data = { "$set": { "position": "Senior Developer" } }
update_result = staff_collection.update_one(search_criteria, update_data)

上記のコードでは、update_one()メソッドを使用してドキュメントを更新します。まず、更新するドキュメントの検索条件を指定し、次に更新するフィールドと新しい値を指定します。

データの削除


from pymongo import MongoClient

# MongoDBに接続
db_client = MongoClient("mongodb://localhost:27017/")

# データベースを選択
my_db = db_client["company_db"]

# コレクションを選択
staff_collection = my_db["staff_members"]

# ドキュメントを削除
delete_criteria = { "name": "Tanaka" }
delete_result = staff_collection.delete_one(delete_criteria)

上記のコードでは、delete_one()メソッドを使用してドキュメントを削除します。まず、削除するドキュメントの検索条件を指定します。

以上が基本的な追加、削除、更新、検索操作です。MongoDBにはさらに多くの強力な操作と機能があり、実際のニーズに応じて学習して使用することができます。

タグ: MongoDB pymongo データベース コレクション CRUD操作

6月12日 18:52 投稿