数えるのですら金を取るのか、Firestoreよ
count()はreadより1000倍安い。しかし
- collection groupのindexがない
- 1000倍安くてもものすごい数ある
こんなときは困る。
users/[user_id]/posts/[post_id]
となっているとき全ユーザーのpostsの総数を調べたいとき、count()するには posts に対してcollection group indexを作成しておかないといけないのである。indexはstorageコストにつながる。数え終わったらindex消せばいいという話ではあるのだが話を最後まで聞いてくれ。
答え
indexを消す。
たとえばpostsの総数が知りたいならpostsの何らかのindexを消した後に
% gcloud firestore operations list
これで
progressDocuments:
completedWork: '100000000'
estimatedWork: '100000000'
とかでてくる。この completedWork がたぶん総数だ。
消すindexがない?ないなら反対に適当な存在しないfieldでindexつくればいいんじゃないかな。知らない。
追記
「複合index」がある場合、そのfieldの組み合わせを含む、document数がわかる。
GCPのFirestore > インデックス。
たとえば isPublic, createdAt で複合indexを作った場合、それらを両方とも含むdocumentの数がわかる。それに加えてそのindexがfirestore storage容量をどれくらい使っているかもわかる。
単体indexも表示してほしいところですね (^o^)/~