2012-02-22 23 views
4

DynamoDBでのクエリ操作は、「OR」「AND」とすることはできますか?Dynamodbのクエリ操作

私は一般的にRailsの

感謝。

+0

RTFMのような異なるoperatiorsはありますか?ドキュメントはそのような答えを見つけるのに適しています。 –

+0

http://docs.amazonwebservices.com/amazondynamodb/latest/developerguide/queryingdynamodb.html – Hal

答えて

6

で、なし。

DynamoDBのが唯一の主(ハッシュ)で効率的な検索を可能に?DynamoDBは、SQLクエリから「"where fname = xxxx OR lname = xxxxのようなものを持っているかどうかを知る必要がありキー、およびオプションで範囲キーの範囲クエリ。

Scan要求を使用して、テーブルフィルタ全体を属性セットで読み取ることができますこれは、大規模なテーブルでは比較的高価で遅いオプションです。

あなたがシミュレートし、照会する両方の値が含まれ、主キーを作成することによって、およびORそれぞれが自分の主キーとして一つの属性を使用して重複するテーブルを作成することによって、およびBatchGetItem

1

ように並列に両方のテーブルを照会することができますBCoatesは答えはNOであると述べた。

一貫性のある読み取りが必要な場合は、BatchGetItemを使用できません。

0

いいえ、ありません使用することも可能 'OR' 演算子、 例えば KeyConditionExpression中: '#hashkey =:hk_valと#rangekey>:rk_val'、

それが一致するためそして演算子を使用しますボットのHASHとRANGEキーのために。

Dynamo Dbではまたはを使用できません。

0

"OR""AND"のようなものはありませんが、あなたはまだスキャンfilterexpressionを使用して、SQLクエリをシミュレートすることができますが。

しかし、スキャンを使用している場合は、テーブル全体がフェッチされて処理され、スキャンが常に1回の繰り返しで全テーブルをスキャンするとは限りません。あなたはいくつかのアイテムを逃してしまうかもしれません。この方法は、非常にコストがかかるので、一般的に回避される。しかし、ここであなたがしたいSQLクエリをシミュレートすることができboto3 APIを使用してのpython3コードの一部

response = table.scan(
FilterExpression=Attr('fname').eq('xxxxx') | Attr('lname').eq('xxxxx')) 

filterexpressionも&、〜