2012-02-22 90 views
4

是否有可能在DynamoDB「OR」,「」查詢操作的工作?Dynamodb查詢操作

我需要知道,如果DynamoDB有從SQL查詢類似"where fname = xxxx OR lname = xxxx「?Rails中

感謝。

+0

RTFM?文檔是找到這樣的答案的好地方。 – 2012-02-22 05:12:53

+0

http://docs.amazonwebservices.com/amazondynamodb/latest/developerguide/queryingdynamodb.html – Hal 2012-02-22 17:58:19

回答

6

在一般情況下,沒有。

DynamoDB只允許由初級(散)進行有效的查找鍵,加上一個範圍之間的「範圍鍵」。其他屬性不被索引的查詢。

您可以通過一組屬性使用Scan請求讀取整個表濾波器,但對於大型表來說,這是一個相對昂貴和緩慢的選項。

可以通過創建包含這兩個值主鍵模擬與被查詢,和或通過用BatchGetItem

1

作爲創建各自使用一個屬性作爲其主鍵的重複表,查詢在平行兩個表BCoates提到答案是NO。

如果你想要一致的讀取,那麼你不能使用BatchGetItem。

0

不,它不可能使用 '或' 操作, 例如在 KeyConditionExpression: '#hashkey =:hk_val和#rangekey>:rk_val',

它採用操作匹配for bot HASH和RANGE Key。

因此,我們不能在Dynamo Db中使用

0

雖然沒有這樣的事情「或」「AND」,但你仍然可以使用掃描filterexpression模擬SQL查詢。

但請記住,如果您正在使用掃描,那麼它意味着整個表格將被提取並處理,同時掃描並不總是在一次迭代中掃描整個表格。所以你可能會錯過一些項目。所以通常避免這種方法,因爲它非常昂貴。但這裏是用boto3 API的python3代碼塊,可以模擬SQL查詢你想

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

filterexpression也不同運營商移動像&,〜