2017-06-14 5 views
0

Documentation > Datastore Queries > Limitations of cursorsGoogleクラウドデータストアは:逆引きクエリ

  • ソート順

    元のクエリの最後のソート順が__key__にあった場合は例外がある中で、カーソルを使用してください。その場合は、逆順クエリでカーソルを使用できます。これは、各ソート順が逆になっている元のクエリです。逆のクエリでは、開始カーソル、終了カーソル、オフセット、およびリミットを変更できます。

それが唯一の__key__は逆の順序で使用することができることが述べられているが、カスタムインデックスを作成した別のプロパティでも利用可能であるようです。開発環境と運用環境の両方で試しました。

「元のクエリの最終ソート順が__key__の場合は例外です」 ?

答えて

0

私は簡単な例でこれを明確にしましょう:

は、あなたが(カーソル/リミット構文を省略)クエリを持っているとしましょう -

SELECT * FROM MyEntity ORDER BY PROP1 ASC 

今の要件は、あなたが前方の両方を通過する必要があるということです逆方向とカーソルの使用。

あなたがする必要がある最初の事は最後の一種として__key__を持っているあなたのクエリを変更することである -

SELECT * FROM Entity ORDER BY PROP1 ASC, __key__ ASC 

あなたは、通常のカーソルを使用して前方に横断することができますが、逆方向に横断する必要がある場合は、以下を行う必要がありソート順を逆にしてクエリを実行します。あなたはまだあなたがいるページの同じカーソルを使用することができます。だから、クエリは、我々が終了DESCASC endng順序を変更した

SELECT * FROM Entity ORDER BY PROP1 DESC, __key__ DESC 

お知らせに変更されます。

これは、基本的に、現在のカーソル位置から前のレコードを提供します。これを機能させるには、適切な複合インデックスを持つ必要があります(たとえば、PROP1__key__のDESC順)。もちろん、ソート順に他のプロパティを追加することもできますし、例の場合はPROP1を削除しても問題はありません。結果はキーだけでソートされます。

最後のソートとしてキーを使用すると、逆順クエリで進むときに得たカーソルを使用できなくなります。これが「例外」ルールです。

+0

ありがとうございます!ソート順で__key__を使用しないクエリの場合は、ASCで取得したカーソルを使用してDESCでデータを1回だけ取得できますか? – Mentha

+0

最後の(または唯一の)ソートとしてキーがない場合、ソート順を変更すると不正な結果になります。 –

+0

ありがとうございました。 問題は解決されました。 – Mentha

関連する問題