1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Firestore】【Python】Firestoreでselect()を使って特定のフィールドのみ取得する

Last updated at Posted at 2022-12-21

FirestoreでSelect()を使って特定のフィールドのみを取得する

Firestoreのデータを取得する際に特定のドキュメントのみを取得したいというケースがあるかと思います。

今回はそういったケースのpythonを用いた解決方法を紹介します。

参考例 1 特定のフィールドのみを取得

"customers" コレクションのドキュメント内の"user"フィールドのみを取得したい

データ例

image.png

コード例

下記の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

参考記事

↓公式リファレンス

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?