カテゴリ: Python 更新日: 2026/03/20

PythonでMongoDBを操作しよう!データの挿入・更新・削除を初心者向けに徹底解説

PythonでMongoDBにデータを挿入・更新・削除する基本操作
PythonでMongoDBにデータを挿入・更新・削除する基本操作

先生と生徒の会話形式で理解しよう

生徒

「Pythonを使ってMongoDBのデータを書き換えたり消したりする方法を知りたいです!」

先生

「MongoDBでは、データの追加、書き換え、削除といった操作がとても直感的に行えますよ。PyMongoというライブラリを使います。」

生徒

「具体的にはどんな命令を使うんですか?」

先生

「挿入、更新、削除の3つの基本操作を、初心者の方でもわかるように順番に解説していきますね!」

1. データの挿入:新しい情報をデータベースに追加する

1. データの挿入:新しい情報をデータベースに追加する
1. データの挿入:新しい情報をデータベースに追加する

プログラミングでデータを扱うとき、最も基本となるのが「新しい情報を入れる」という作業です。これを専門用語で挿入(インサート)と呼びます。パソコンを触ったことがない方に例えると、真っ白なノートに新しく文字を書き込んだり、空のフォルダに新しいファイルを保存したりするような感覚です。

MongoDBでは、データを「書類(ドキュメント)」のような形で管理します。Pythonでは、この書類を「辞書形式」という書き方で作成します。{ "項目名": "中身" }という書き方ですね。これ一組を一つのデータとしてデータベースに放り込みます。一行の命令で、あなたの用意した情報がデータベースという大きな保管庫にしっかりと保存されます。

2. insert_oneメソッド:一件のデータを挿入する

2. insert_oneメソッド:一件のデータを挿入する
2. insert_oneメソッド:一件のデータを挿入する

まずは、たった一つのデータを新しく追加する方法を見ていきましょう。使う命令は insert_one(インサート・ワン)です。名前の通り「一つ挿入する」という意味です。例えば、お料理レシピのデータベースを作るとしましょう。新しいレシピを一品だけ登録したいときにこの命令を使います。

以下のコードは、Pythonを使ってMongoDBに接続し、「カレーライス」というデータを一件だけ追加するプログラムです。データの形がPythonの辞書そのものなので、とても読みやすいのが特徴です。


from pymongo import MongoClient

# データベースへの接続準備(自分のパソコンに繋ぎます)
client = MongoClient('mongodb://localhost:27017/')
db = client['recipe_database']
collection = db['menu_list']

# 追加したいデータを作成(辞書形式)
new_recipe = {
    "料理名": "カレーライス",
    "調理時間": 30,
    "難易度": "簡単"
}

# データを一件挿入する
result = collection.insert_one(new_recipe)

print("新しいレシピを保存しました!")
print("データ固有の背番号:", result.inserted_id)

実行すると、データベースが自動的にそのデータに「背番号(ID)」を割り振ってくれます。これで、後からそのデータを特定できるようになります。

3. データの更新:保存済みの情報を書き換える

3. データの更新:保存済みの情報を書き換える
3. データの更新:保存済みの情報を書き換える

一度保存した情報を、後から書き換えたいこともありますよね。これを更新(アップデート)と呼びます。例えば、「カレーライスの調理時間が実は40分だった」と判明したときに、その部分だけを修正する作業です。ノートに書いた文字を消しゴムで消して、新しい情報を書き直すイメージですね。

MongoDBの更新は、「どのデータを変えるか」という条件と、「どう変えるか」という内容の二つを指定して行います。これによって、全然関係ないデータまで間違えて書き換えてしまうのを防ぐことができます。非常に安全で確実な方法です。

4. update_oneメソッド:特定の情報を一件だけ書き換える

4. update_oneメソッド:特定の情報を一件だけ書き換える
4. update_oneメソッド:特定の情報を一件だけ書き換える

情報を書き換えるときは update_one(アップデート・ワン)という命令を使います。この命令を使うときは $set(セット)という特殊な記号を使います。これは「この項目をこの内容にセットし直してね」という指示になります。

以下のコードでは、先ほど登録した「カレーライス」の調理時間を30分から45分に変更しています。条件を指定することで、特定のデータだけを狙い撃ちで修正できます。


# どのデータを変えるか(検索条件)
filter_condition = {"料理名": "カレーライス"}

# どう書き換えるか(更新内容)
new_values = {"$set": {"調理時間": 45}}

# データを一件更新する
collection.update_one(filter_condition, new_values)

print("調理時間を更新しました!")

このように、元のデータを一度全部消して作り直す必要はありません。変えたい部分だけをスマートに修正できるのがプログラミングの便利なところです。

5. データの削除:不要になった情報を消去する

5. データの削除:不要になった情報を消去する
5. データの削除:不要になった情報を消去する

最後に紹介するのが、データの削除(デリート)です。使わなくなった情報をデータベースから完全に取り除く作業です。フォルダに入っているファイルをゴミ箱に捨てて、空にするような操作ですね。一度消してしまうと元に戻すのは大変なので、慎重に行う必要があります。

削除も更新と同じように、「どのデータを消すか」という条件を指定します。もし条件を指定せずに実行してしまうと、大事なデータまで消えてしまう可能性があるため、命令の書き方には決まりがあります。初心者の方は、まずは一件だけを消す方法からマスターしましょう。

6. delete_oneメソッド:一件のデータを削除する

6. delete_oneメソッド:一件のデータを削除する
6. delete_oneメソッド:一件のデータを削除する

特定のデータを一つだけ消去するには delete_one(デリート・ワン)を使います。例えば、メニューから「カレーライス」を削除したい場合は、料理名を条件にしてこの命令を呼び出します。

以下のコードは、条件に一致するデータを一件だけ探して、それをデータベースから削除するプログラムです。実行後、データベースの中身を確認しても、そのデータはもうどこにも見つかりません。


# どのデータを消すか(削除条件)
delete_condition = {"料理名": "カレーライス"}

# データを一件削除する
collection.delete_one(delete_condition)

print("指定したレシピを削除しました。")

もし同じ名前のデータが複数あったとしても、この命令であれば一番最初に見つかった一件だけが消されます。全部まとめて消したいときは別の命令がありますが、間違いを防ぐためにはこの「一つずつ操作する」感覚がとても大切です。

7. まとめて操作するメリットと使い分け

7. まとめて操作するメリットと使い分け
7. まとめて操作するメリットと使い分け

ここまで「一件ずつ」の操作を見てきましたが、実はMongoDBには「まとめて挿入」「まとめて更新」「まとめて削除」という命令も存在します。例えば、100人分の名簿を一気に入れたいときに、100回命令を出すのは大変ですよね。そんな時に insert_many(インサート・メニー)などを使います。

しかし、プログラミング未経験の方が最初に覚えるべきは、やはり今回紹介した _one がつく基本操作です。一つ一つの動きを確実に理解することで、プログラムがどうやってデータを動かしているのかという本質が見えてきます。複雑なことは、基本が完璧になってから挑戦すれば大丈夫です。

8. データの型に注意!数字と文字の違い

8. データの型に注意!数字と文字の違い
8. データの型に注意!数字と文字の違い

データを扱うときに初心者が一番つまずきやすいのが、「文字」と「数字」の違いです。例えば、"30"(文字としての30)と 30(計算できる数字の30)は、コンピューターにとっては全くの別物です。更新や削除の条件を指定するときに、ここを間違えると思った通りに動きません。

MongoDBはデータの形に自由ですが、自由だからこそ、自分が今扱っているのが「文字」なのか「数字」なのかを意識することがデバッグ(間違い探し)のコツになります。以下のプログラムで、自分のデータの状態をしっかり確認する習慣をつけましょう。


# 良い例:数字はそのまま書く
data_correct = {"年齢": 20}

# 注意が必要な例:クォーテーションで囲むと文字になる
data_string = {"年齢": "20"}

if type(data_correct["年齢"]) == int:
    print("これは数字(整数)として認識されています。")

9. クエリ(条件)の組み合わせで自由自在

9. クエリ(条件)の組み合わせで自由自在
9. クエリ(条件)の組み合わせで自由自在

更新や削除のときに使う「条件」のことを専門用語でクエリと呼びます。今回は「料理名がカレーライス」という単純な条件でしたが、実はもっと複雑な指定もできます。「調理時間が30分以下のものだけ」や「難易度が簡単で、かつ材料に肉を含むもの」といった具合です。

このクエリを使いこなせるようになると、大量のデータの中から必要なものだけを瞬時に見つけ出し、一括でメンテナンスできるようになります。PythonとMongoDBの組み合わせは、こうした複雑な操作も短いコードで書けるのが最大の魅力です。まずは「イコール(同じもの)」の条件から練習していきましょう。

10. 安全に操作するための心がけ

10. 安全に操作するための心がけ
10. 安全に操作するための心がけ

最後に、データベース操作において最も大切なことをお伝えします。それは「バックアップ」と「確認」です。特に削除や更新は、一度実行すると元に戻すのが非常に困難です。初心者のうちは、実際にデータを消したり変えたりする前に、まずは find_one 命令で「本当にそのデータが存在するか」を確認する癖をつけましょう。

自分の書いたコードが正しく動いて、データベースの中身が思い通りに変わった時の喜びは格別です。挿入・更新・削除の基本をマスターすれば、あなたはもう立派なデータ操作の初心者脱出です。焦らず一歩ずつ、楽しみながらコードを書いていきましょう!

カテゴリの一覧へ
新着記事
New1
Flask
Flaskでデータベースエラーを処理する方法!初心者にもわかる例外の使い方
New2
Flask
FlaskアプリをNginx + Gunicornで本番運用する方法!初心者でもわかるデプロイ構成の基本
New3
Flask
Flaskでデータを追加・取得する基本のやり方!超初心者向けにわかりやすくCRUDを体験しよう
New4
Python
Pythonのデータ型変換まとめ!初心者向けにint, float, str, listの変換方法をやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Flask
Flask×Redisでタスク結果を保存・参照する仕組みを完全解説|初心者向け非同期処理とタスク管理
No.2
Java&Spring記事人気No2
Flask
FlaskアプリをNginx + Gunicornで本番運用する方法!初心者でもわかるデプロイ構成の基本
No.3
Java&Spring記事人気No3
Python
Pythonで仮想環境(venv)を作る方法!初心者向けに環境構築をステップ解説
No.4
Java&Spring記事人気No4
Flask
FlaskのBlueprintとは?機能ごとに分割して管理する基本設計を学ぼう
No.5
Java&Spring記事人気No5
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.6
Java&Spring記事人気No6
Flask
Flaskアプリのテスト性を高める設計方法まとめ
No.7
Java&Spring記事人気No7
Django
Django settings.py の役割とよく使う設定を完全解説!初心者でもわかる基本と考え方
No.8
Java&Spring記事人気No8
Python
Pythonのリストを分割する方法を完全ガイド!初心者でもわかるスライス・split・itertoolsの使い方