Querier

PythonでのFirestoreデータ操作完全ガイド | ドキュメントの取得、追加、更新、削除まで

2023.07.10に公開 | 2023.07.10に更新

Querier運営

@querier_io@querierinc

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

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

Querierについて詳しく見る

FirestoreはGoogle Cloudが提供するリアルタイムデータベースであり、Pythonを使って効率的にデータを操作することができます。

本記事では、Firestoreでデータの取得、追加、更新、削除を行う方法について詳しく解説します。

以下では、それぞれの操作方法について説明します。

データの取得

単一ドキュメントの取得

単一のドキュメントを取得するには、ドキュメントのパスを指定してget()メソッドを使用します。

以下のサンプルコードを参考にしてください。

from google.cloud import firestore

# Firestoreクライアントの初期化
db = firestore.Client()

# ドキュメントのパス
doc_ref = db.collection('collection_name').document('document_id')

# ドキュメントの取得
doc = doc_ref.get()

複数ドキュメントの取得

複数のドキュメントを取得するには、where()メソッドやorder_by()メソッドを組み合わせてクエリを作成します。

以下のサンプルコードを参考にしてください。

from google.cloud import firestore

# Firestoreクライアントの初期化
db = firestore.Client()

# クエリの作成
query = db.collection('collection_name').where('field', '==', 'value').order_by('field')

# ドキュメントの取得
docs = query.get()

条件を指定して取得

特定の条件を指定してドキュメントを取得するには、where()メソッドを使用します。

以下のサンプルコードを参考にしてください。

from google.cloud import firestore

# Firestoreクライアントの初期化
db = firestore.Client()

# 条件を指定したクエリの作成
query = db.collection('collection_name').where('field', '==', 'value')

# ドキュメントの取得
docs = query.get()

ページングを実装する

大量のドキュメントを取得する場合、ページングを実装することで効率的にデータを取得できます。

以下のサンプルコードを参考にしてください。

from google.cloud import firestore


# Firestoreクライアントの初期化
db = firestore.Client()

# ページングクエリの作成
query = db.collection('collection_name').limit(10)

# ページング処理
while True:
    docs = query.get()
    for doc in docs:
        # ドキュメントの処理
        print(doc.id)
    
    # 次のページがあるかチェック
    if len(docs) < 10:
        break
    
    last_doc = docs[len(docs) - 1]
    query = query.start_after(last_doc)

データの追加

IDを指定しないで追加

IDを指定せずにドキュメントを追加するには、collection()メソッドを使用します。

以下のサンプルコードを参考にしてください。

from google.cloud import firestore

# Firestoreクライアントの初期化
db = firestore.Client()

# ドキュメントの追加
doc_ref = db.collection('collection_name').document()
doc_ref.set({'field': 'value'})

IDを指定して追加

IDを指定してドキュメントを追加するには、document()メソッドの引数にIDを指定します。

以下のサンプルコードを参考にしてください。

from google.cloud import firestore

# Firestoreクライアントの初期化
db = firestore.Client()

# ドキュメントの追加
doc_ref = db.collection('collection_name').document('document_id')
doc_ref.set({'field': 'value'})

データの更新

ドキュメントの値を更新

構造体のデータを更新するには、update()メソッドを使用します。

以下のサンプルコードを参考にしてください。

from google.cloud import firestore

# Firestoreクライアントの初期化
db = firestore.Client()

# ドキュメントの更新
doc_ref = db.collection('collection_name').document('document_id')
doc_ref.update({'field': 'new_value'})

データの削除

ドキュメントの削除

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

以下のサンプルコードを参考にしてください。

from google.cloud import firestore

# Firestoreクライアントの初期化
db = firestore.Client()

# ドキュメントの削除
doc_ref = db.collection('collection_name').document('document_id')
doc_ref.delete()

データ内の一部データを削除

データ内の一部データを削除する場合、通常の値を削除する方法はフィールドを更新してNoneFieldValue.delete()を設定することです。以下のサンプルコードを参考にしてください。

from google.cloud import firestore
from google.cloud.firestore import DELETE_FIELD

# Firestoreクライアントの初期化
db = firestore.Client()

# データの更新
doc_ref = db.collection('collection_name').document('document_id')
doc_ref.update({'field_to_delete': firestore.DELETE_FIELD})

上記の例では、field_to_deleteフィールドを削除します。firestore.DELETE_FIELDを指定することで、指定したフィールドを削除することができます。
また、特定の値を削除したい場合は、その値をNoneに設定することもできます。

from google.cloud import firestore

# Firestoreクライアントの初期化
db = firestore.Client()

# データの更新
doc_ref = db.collection('collection_name').document('document_id')
doc_ref.update({'field_to_delete': None})

上記の例では、field_to_deleteフィールドの値をNoneに設定することで、値を削除します。

さいごに

以上がPythonでFirestoreのデータ操作をするための基本的な方法です。

データの取得、追加、更新、削除の方法を理解することで、効率的にFirestoreを活用することができます。

Firestoreの公式ドキュメントも参考にしながら、さまざまな操作を試してみてください。

参考文献


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

最新の記事

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

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

more

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

Querierについて詳しく見る