2012-01-04 18 views
0

やあみんな、私は、これは古い問題である知っているが、そこにあれば、私はそれについてのニュースを疑問に思って:AppEngine Datastoreクエリで、不等号とソート(別の属性)。回避策?

フィルタ(「を作成> =」、somedatetime).ORDER:私は私がやりたい単純なクエリを持っている を( '-counter')

私が試したのは:filter( 'created> ='、somedatetime).order( ' - created')。order( ' - counter')ですが、作成されたのはdatetimeなので、 。

ユーザーは無限のスクロールでリストを表示できますが、7,30,90日間の時間枠を選択できますが、これは非常に単純なクエリではないようです。

私は2つの属性(dayofyear、年)を作成するためにIN演算子を使用することができますが、これは2Mのエントリがあるため難しいと思っていました。

アイデア?

+0

(dayofyear、year)ではなく、DateFieldを使用してください。このクエリが頻繁に行われないと、Pythonのソートでソートすることができます。 Pythonでソートするのが高すぎる場合は、DateFieldを作成し、 'IN'を使用してクエリを作成する必要があります。しかし、新しいフィールドでは、多くの書き込み操作が発生するため、お金もかかります。 – Ski

+0

私はPythonを使います。 INは素晴らしいかもしれませんが、場合によっては90のクエリが必要になります。 – PanosJee

答えて

2

いいえ、これを回避する方法はありません。この制限は、索引の構成方法によって決まります。他のデータベースと同じように、ソートやフィルタリングをメモリ内で行うだけで済みます。