UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【Cloud Datastore】GQLを使って前方一致検索をする

GCP Datastoreにまたしてもうっかり間違えたデータを大量に登録してしまった

前回はある日付以降のデータを削除したかったのだが、今度はあるフィールドの文字列を前方一致で検索した結果を削除したい

削除の方法はわかっているので、検索方法を調査した

uga-box.hatenablog.com

GQLで前方一致検索する方法

結果的にGQLのクエリで>=を利用すればよいことがわかった

SELECT * FROM <kind> WHERE <field> >= '<keyword>'

画面のフィルターでどうすればよいのかが不明だったがGQLから考えると以下で実現できた

f:id:uggds:20200331140004p:plain

部分一致検索はできない

前方一致の方法を調査したついでに、部分一致はできないことがわかった

以下のような方法でもだめ

WHERE title >= :1 AND title < :2", title

単一の項目で検索した後に、プログラムレベルでフィルタをかける方法しかないみたい