PythonでMongoDBを操作する方法|pymongoを使った基本操作入門
MongoDBは広く利用されているドキュメント指向データベースであり、NoSQLデータベースの一種です。Pythonはpymongoなどのモジュールを介してMongoDBと連携し、データの作成や操作を行うことができます。本記事では、その具体的な方法を解説します。なお、PythonからMongoDBへ接続するには、システムにMongoDBがあらかじめインストールされている必要があります。MongoDBのセットアップ手順については、専用のチュートリアル記事をご参照ください。
pymongoのインストール
MongoDBとやり取りするには、pymongoというモジュールが必要です。以下のコマンドを実行して、Python環境にインストールしてください。
pip install pymongo
既存のデータベースを確認する
pymongoを使って、サーバー上に存在するデータベースを確認してみましょう。次のプログラムはMongoDBサービスに接続し、利用可能なデータベース名の一覧を出力します。
import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
print(myclient.list_database_names())
実行結果
['Mymdb', 'admin', 'config', 'local']
「admin」「config」「local」はMongoDBが内部的に管理するシステム用データベースで、「Mymdb」はユーザーが作成したデータベースです。
コレクションの確認
コレクションは、従来のRDBMSにおけるテーブルに相当する概念です。特定のデータベースにどのようなコレクションが存在するかは、次のプログラムで確認できます。
import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mndb = myclient["Mymdb"]
print(mndb.list_collection_names())
実行結果
['newmongocoll']
ドキュメントの挿入
MongoDBのドキュメントは、従来のRDBMSにおける行(レコード)に相当します。ここでは、PythonプログラムからMongoDBへドキュメントを挿入する方法を見ていきます。まずデータベースとコレクションにアクセスし、Pythonの辞書(dict)に格納した値をinsert_one()メソッドでコレクションに追加します。
import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mndb = myclient["Mymdb"]
mycol = mndb['newmongocoll']
mydict = { "ID": "2", "Name": "Ramana" }
x = mycol.insert_one(mydict)
print(x)
実行結果
<pymongo.results.InsertOneResult object at 0x000002CA92A920C0>
insert_one()はInsertOneResultオブジェクトを返します。挿入されたドキュメントのObjectIdは、戻り値に対して x.inserted_id とすることで取得できます。
ドキュメントの検索
pymongoのfind()メソッドを使えば、コレクション内のドキュメントを照会(検索)できます。
import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mndb = myclient["Mymdb"]
mycol = mndb['newmongocoll']
for x in mycol.find():
print(x)
実行結果
{'_id': ObjectId('5ef8b6f92d192421b78d32cb'), 'ID': '2', 'Name': 'Ramana'}
_idフィールドは、MongoDBが各ドキュメントに自動的に付与する一意な識別子(ObjectId)です。また、find()メソッドに検索条件を渡せば、特定の条件に合致するドキュメントだけを抽出することも可能です。
まとめ
本記事では、Pythonのpymongoモジュールを使ったMongoDBの基本操作として、インストール、データベース一覧の取得、コレクションの確認、ドキュメントの挿入・検索の方法を解説しました。いずれもMongoDBアプリケーション開発の土台となる重要な操作なので、実際にコードを書いて動作を確かえてみてください。
-
Pythonにおける「+=」と「=+」の違いとは?演算子の動作をわかりやすく解説
Pythonには見た目がよく似ているのに、まったく異なる動作をする演算子が存在します。その代表例が「+=」と「=+」です。この2つは一見同じように見えますが、実際には意味も役割も大きく違います。本記事では、それぞれの動作の仕組みと具体的な使い方を詳しく解説します。 「+=」は複合代入演算子(in-place演算) +=は、Pythonでは複合代入演算子と呼ばれるもので、内部的には object.__iadd__() メソッドへのシンタックスシュガー(糖衣構文)です。 公式ドキュメントには次のように記載されています。 これらのメソッドは、拡張された算術代入(+=、-=、*=、@=、/=、//=
-
PyMongoと各種データベースエンジン向けPythonモジュール徹底解説
一般的に開発者は、データのエクスポートやインポート、データベース(DB)統計情報の収集、表領域の監視、ブロックされたセッションやDBロックの確認など、データベース関連タスクの自動化にシェルスクリプトを利用してきました。 概要 Python®はここ7年以上にわたり、最も人気のあるプログラミング言語のひとつとして地位を確立しています。本記事では、さまざまなデータベースエンジンに対応したPythonのDBモジュールを紹介し、さらにPyMongoモジュールを使ってMongoDB®のコレクションに対してデータの照会・挿入を行う具体的な方法を解説します。 Pythonモジュールの紹介 Pythonはオブジ