GoogleCloudStrageでkey(RDBでいうところのprimarykey)をフックにしてentityをselectしようと思ったらちょっとハマったのでそのメモ
最初に書いたクエリ
SELECT * FROM KIND_NAME where ID = 123
この形式ではentityを取得できない。
正しいクエリ
SELECT * FROM KIND_NAME where __key__ = key(KIND_NAME, 123)
とするとうまくいく。
GQLではプライマリーキーをwhereに指定する場合にはIDではなく、 __key__
を指定し、かつ key(KIND_NAME, (ID))
という形式にしないと検索できない。
こんなことでハマってしまったのであるが、 リファレンス には
Every GQL query string always begins with SELECT <something>, where <something> is one of the following: - * - <property-list>, a comma delimited list of properties to be returned from the query. - __key__, which returns keys only. (__key__はkeys(primarykey)のみを返す)
と記載してあった。
解答がわかった後にリファレンスをもう一度見直したけど、イマイチわかりづらい。
RDBと同じ感覚でいるとNoSQLでは結構ギャップを感じることが多い。