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にはさらに多くの強力な操作と機能があり、実際のニーズに応じて学習して使用することができます。