FirestoreでSelect()を使って特定のフィールドのみを取得する
Firestoreのデータを取得する際に特定のドキュメントのみを取得したいというケースがあるかと思います。
今回はそういったケースのpythonを用いた解決方法を紹介します。
参考例 1 特定のフィールドのみを取得
"customers" コレクションのドキュメント内の"user"フィールドのみを取得したい
データ例
コード例
下記のget_user()関数は、customerid として、ドキュメントIDを付与して、userのフィールドを結合させた辞書型のユーザデータを配列にしてリストで返却しています。
sample.py
FB_DB = firestore.client()
def get_user():
doc_ref = FB_DB.collection("customers").select(field_paths=["user"])
doc = doc_ref.stream()
response = [{"customerid": el.id, **el.to_dict()["user"]} for el in doc]
if len(response) <= 0:
raise FileNotFoundError("Customer Data Not Found")
return response
参考例 2 ネストした特定のフィールドのみを取得
"customers" コレクションのドキュメント内の"user">"username"フィールドのみを取得したい
コード例
下記のget_user()関数は、ドキュメントIDをKeyとして、usernameの値を代入した辞書型の値を返却しています。
sample.py
FB_DB = firestore.client()
def get_user_name():
doc_ref = FB_DB.collection("customers").order_by("user").select(field_paths=["user.username"])
doc = doc_ref.stream()
response = {el.id: el.to_dict()["user"]["username"] for el in doc}
if len(response) <= 0:
raise FileNotFoundError("Customer Data Not Found")
return response
参考記事
↓公式リファレンス