2017-08-23 22 views
0

新しい柔軟な環境のデータストアインターフェイスは、クエリの実行時にINオペレーションをサポートしていないようです。もし私が間違っていたら、Datastoreの新しいJavaインターフェイスでIN演算子をどうすれば使えますか?IN演算子を使用したデータストアクエリ

答えて

1

-WHERE color IN('RED', 'BLACK')のようなクエリは、Datastore(サーバー側)ではサポートされていません。 OR演算子(例:WHERE color='RED' OR color='BLACK')の場合も同じです。一部のクライアントAPIでは、クエリを複数に分割し、各クエリの結果をマージすることでこの機能を追加しています。新しいgoogle-cloud-java APIはこれをまだサポートしていません。今のところ、IN句の各値に対して複数のクエリを実行し、結果をマージする必要があります。ここで

+0

または可能であれば、クエリの代わりにバッチルックアップを使用します。 –

0

documentationからの例です:

クエリに複数のフィルタを設定したい場合は、少なくとも2つのフィルタを必要とCompositeFilterを使用する必要があります。

Filter tooShortFilter = new FilterPredicate("height", FilterOperator.LESS_THAN, minHeight); 
Filter tooTallFilter = new FilterPredicate("height", FilterOperator.GREATER_THAN, maxHeight); 
Filter heightOutOfRangeFilter = CompositeFilterOperator.or(tooShortFilter, tooTallFilter); 
Query q = new Query("Person").setFilter(heightOutOfRangeFilter); 

また.and()を使用することができます。ここでのコードはJava 7用です。Java 8の場合は、上で参照したドキュメントで対応するコードを見つけることができます。私はそれが助けて欲しい

Now to IN。私は最近それを試していませんが、現在のドキュメントでは、がまだ演算子として使用できることを示しています。それによると、以下のようなコードは動作するはずです:

Filter propertyFilter = new FilterPredicate("height", FilterOperator.IN, minHeights); 
Query q = new Query("Person").setFilter(propertyFilter); 

また、あなたはGoogle GQLを使用することができます。これは、あなたはin(...)を使用することができますSQLのような構文を記述することができます。

+0

新しいデータストアAPIに適用されますか? –

+0

文書はまだ同じですので、私は「はい」と推測しています。 – Y2H

+0

ドキュメントは標準的な環境であり、柔軟なものではありません:-( –

関連する問題