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

最新の記事

2〜3ヶ月と見積もっていた開発期間を、クエリアを導入することでわずか1週間に短縮できました

2012年5月創業のフルカイテン株式会社。 「在庫をフル回転させる」をコンセプトに、機械学習を駆使したSaaS『FULL KAITEN』を提供し、在庫問題の解決に取り組む。

more

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

Querierについて詳しく見る