2016-10-23 3 views
0

ローカリティを持たせたいオブジェクトに対して、私はいくつかのGoogleドキュメント推奨に従って作成したオブジェクトのセットを持っています。datastore範囲内の最後のキーを取得しますか?

私は '名前#00000001'という形式のキーを持つオブジェクトを持っています。私のことは、私はこれらのうちの最後のものを得るために必要な操作をしているので、以下のコードでそれらをすべて得ることができます。

var query = datastore.createQuery('Post') 
     .select('__key__') 
     .filter('__key__', '>=', datastore.key(['Post', req.query["Thread"] + "#00000001"])) 
     .filter('__key__', '<=', datastore.key(['Post', req.query["Thread"] + "#99999999"])); 

物事は私が

var query = datastore.createQuery('Post') 
     .select('__key__') 
     .filter('__key__', '>=', datastore.key(['Post', req.query["Thread"] + "#00000001"])) 
     .filter('__key__', '<=', datastore.key(['Post', req.query["Thread"] + "#99999999"])) 
     .order('__key__',{descending: true}) 
     .limit(1); 

のようなものを行うとき、それが失敗しています。私はキーでは全く注文できないようです。アイテムにはこれに加えてタイムスタンプがありますが、1つのアイテムでフィルタリングして別のアイテムでフィルタリングすることはできません。すべてのクエリを実行せずにクエリを使用して最後のアイテムを取得する方法はありますか?

答えて

0

Google Cloud-JavaではStructuredQueryを参照してください。 .setOrderBy(OrderBy.asc( "__ key__"))

+0

しかし、データストアはインデックスをサポートしています。この場合、インデックスデータには大きなバイナリツリーがあると考えるのが最善です。あなたはバイナリツリーから最後の要素を得ることができると期待しています... – Max

関連する問題