pymongoはMongoDBへのインターフェイスを提供します。
pymongoのインストール
pipを使ってインストールします。
python3 -m pip install pymongo
MongoDBとの接続
MongoClientを作成してDBに接続します。
import pymongo
from pymongo import MongoClient
client = MongoClient()
上記関数、引数を指定しないMongoClient()は、デフォルトのホストとポートに接続します。hostとportを指定する場合は、以下のように引数に指定します。
client = MongoClient('localhost', 27017)
URIの形式でも可能です。
client = MongoClient('mongodb://localhost:27017/')
データベースを取得する。
db = client.database_abc
以下のようにdict形式でアクセスすることもできます。
db = client['database_abc']
コレクションを取得します。
collection = db.collection_def
dict形式でアクセスする場合
collection = db['collection_def']
コレクションにドキュメントを追加する insert_one()
コレクションにドキュメントを追加します。
insert_one()メソッドを使います。
post = {
"author":"Mike",
"text": "MongoDB client",
"date": "2023-04-04"
}
collection = db['collection_def']
id = collection.insert_one(post).insert_id
コレクションからドキュメントを取得する find_one()
クエリに一致したドキュメントを取得する。
find_one()メソッドを使います。
collection.find_one({"author":"Mike"})
{'_id':ObjectId('...'),
'author':'Mike',
...
}
まとめてドキュメントを追加する insert_many()
バルクインサート操作
まとめてドキュメントを追加します。各ドキュメントをリストに追加し、一つのコマンドでサーバーに送ります。
new_posts = [
{"author":"Mike",
"text": "bulk ins",
"date": 2023-04-18"
},
{"author":"Jim",
"text": "ins many",
"date": 2023-04-18"
}
]
result = collection.insert_many(new_posts)
ドキュメント数の取得
コレクション内のすべてのドキュメント数
collection.count_documents({})
クエリに一致したドキュメントの数を返します。
collection.count_documents({'author':'Mike'})