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

最新の記事

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

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

more

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

Querierについて詳しく見る