Querier

PythonでMongoDBのデータ操作をマスターする

2023.07.12に公開 | 2023.07.12に更新

Querier運営

@querier_io@querierinc

「Querier(クエリア)」は社内向け管理画面を圧倒的な速さで、かつビジネスのスケールに合わせて柔軟に構築することができるローコードツールです。

管理画面の構築もWeb上で完結
エンジニアのためのローコードツール

Querierについて詳しく見る

PythonとMongoDBを組み合わせると、データ分析やWeb開発において非常にパワフルなツールとなります。

この記事では、PythonでMongoDBのデータ操作を行う基本的な方法を紹介します。

セットアップ

まずは、PythonからMongoDBを操作するために必要なライブラリ「pymongo」のインストールから始めます。

以下のコマンドでインストールできます。

pip install pymongo

インストールが完了したら、MongoDBのクライアントを作成し、あらかじめ作成したデータベースとコレクションに接続します。

from pymongo import MongoClient

client = MongoClient('mongodb://localhost:27017/')
db = client['my_database']
collection = db['my_collection']

これでPythonからMongoDBにアクセスできるようになります。

詳細な設定方法はMongoDB公式ドキュメントを参照してください。

データの取得

find_one

クエリに一致する最初のドキュメントを取得するには、find_oneメソッドを使用します。

doc = collection.find_one({'name': 'John'})
print(doc)

上記のコードは、"name"フィールドが"John"という値を持つ最初のドキュメントを検索します。

詳細は公式ドキュメントを参照してください。

find

クエリに一致するすべてのドキュメントを取得するには、findメソッドを使用します。

docs = collection.find({'age': {'$gte': 30}})
for doc in docs:
    print(doc)

上記のコードは、"age"フィールドの値が30以上のすべてのドキュメントを検索します。

詳細は公式ドキュメントを参照してください。

ページングを実装する

大量のデータを扱う場合、ページングを実装すると便利です。skipメソッドとlimitメソッドを組み合わせて使用します。

docs = collection.find().skip(10).limit(5)
for doc in docs:
    print(doc)

上記のコードは、コレクションの11番目から15番目までのドキュメントを取得します。

詳細は公式ドキュメントを参照してください。

データの追加

insert_one

ドキュメントをコレクションに追加するには、insert_oneメソッドを使用します。

doc = {'name': 'John', 'age': 25, 'job': 'Engineer'}
result = collection.insert_one(doc)
print(result.inserted_id)

上記のコードは、新たなドキュメントをコレクションに追加し、そのドキュメントのIDを出力します。

詳細は公式ドキュメントを参照してください。

insert_many

複数のドキュメントを一度に追加するには、insert_manyメソッドを使用します。

docs = [
    {'name': 'Alice', 'age': 22, 'job': 'Doctor'},
    {'name': 'Bob', 'age': 28, 'job': 'Lawyer'}
]
result = collection.insert_many(docs)
print(result.inserted_ids)

上記のコードは、新たなドキュメントを2つコレクションに追加し、そのドキュメントのIDを出力します。

詳細は公式ドキュメントを参照してください。

データの更新

update_one

ドキュメントを更新するには、update_oneメソッドを使用します。

result = collection.update_one({'name': 'John'}, {'$set': {'job': 'Data Scientist'}})
print(result.modified_count)

上記のコードは、"name"フィールドが"John"のドキュメントを探し、"job"フィールドを"Data Scientist"に更新します。

詳細は公式ドキュメントを参照してください。

update_many

複数のドキュメントを一度に更新するには、update_manyメソッドを使用します。

result = collection.update_many({'age': {'$gte': 30}}, {'$set': {'job': 'Manager'}})
print(result.modified_count)

上記のコードは、"age"フィールドの値が30以上のすべてのドキュメントの"job"フィールドを"Manager"に更新します。

詳細は公式ドキュメントを参照してください。

4-3. find_one_and_update

ドキュメントを見つけて更新し、そのドキュメントを返すには、find_one_and_updateメソッドを使用します。

doc = collection.find_one_and_update({'name': 'Alice'}, {'$inc': {'age': 1}})
print(doc)

上記のコードは、"name"フィールドが"Alice"のドキュメントの"age"フィールドを1増やします。

詳細は公式ドキュメントを参照してください。

データの削除

delete_one

ドキュメントを削除するには、delete_oneメソッドを使用します。

result = collection.delete_one({'name': 'John'})
print(result.deleted_count)

上記のコードは、"name"フィールドが"John"のドキュメントを削除します。

詳細は公式ドキュメントを参照してください。

delete_many

複数のドキュメントを一度に削除するには、delete_manyメソッドを使用します。

result = collection.delete_many({'age': {'$lt': 30}})
print(result.deleted_count)

上記のコードは、"age"フィールドの値が30未満のすべてのドキュメントを削除します。

詳細は公式ドキュメントを参照してください。

データを集計する

count_documents

クエリに一致するドキュメントの数をカウントするには、count_documentsメソッドを使用します。

count = collection.count_documents({'age': {'$gte': 20}})
print(count)

上記のコードは、"age"フィールドの値が20以上のドキュメントの数をカウントします。

詳細は公式ドキュメントを参照してください。

distinct

特定のフィールドに含まれるユニークな値のリストを取得するには、distinctメソッドを使用します。

jobs = collection.distinct('job')
for job in jobs:
    print(job)

上記のコードは、"job"フィールドのすべてのユニークな値のリストを取得します。

詳細は公式ドキュメントを参照してください。

さいごに

この記事では、Pythonを使用してMongoDBのデータ操作を行う基本的な方法を探りました。

PythonとMongoDBの組み合わせは、データ操作の幅を大きく広げます。データの取得から更新、削除、さらに集計まで、これらの操作は日々のデータ解析やWeb開発で非常に役立ちます。

PythonとMongoDBの組み合わせで、あなたのデータ操作がよりパワフルになることを願っています。

「Querier(クエリア)」は社内向け管理画面を圧倒的な速さで、かつビジネスのスケールに合わせて柔軟に構築することができるローコードツールです。

最新の記事

【告知】値の参照時の仕様変更のお知らせ

このたび2024年11月11日に値の参照に関する仕様変更を予定しておりますので詳細について報告いたします。

more

管理画面の構築もWeb上で完結
エンジニアのためのローコードツール

Querierについて詳しく見る