是否有可能在DynamoDB「OR」,「和」查詢操作的工作?Dynamodb查詢操作
我需要知道,如果DynamoDB
有從SQL查詢類似"where fname = xxxx OR lname = xxxx
「?Rails中
感謝。
是否有可能在DynamoDB「OR」,「和」查詢操作的工作?Dynamodb查詢操作
我需要知道,如果DynamoDB
有從SQL查詢類似"where fname = xxxx OR lname = xxxx
「?Rails中
感謝。
在一般情況下,沒有。
DynamoDB只允許由初級(散)進行有效的查找鍵,加上一個範圍之間的「範圍鍵」。其他屬性不被索引的查詢。
您可以通過一組屬性使用Scan
請求讀取整個表濾波器,但對於大型表來說,這是一個相對昂貴和緩慢的選項。
可以通過創建包含這兩個值主鍵模擬與被查詢,和或通過用BatchGetItem
作爲創建各自使用一個屬性作爲其主鍵的重複表,查詢在平行兩個表BCoates提到答案是NO。
如果你想要一致的讀取,那麼你不能使用BatchGetItem。
不,它不可能使用 '或' 操作, 例如在 KeyConditionExpression: '#hashkey =:hk_val和#rangekey>:rk_val',
它採用而操作匹配for bot HASH和RANGE Key。
因此,我們不能在Dynamo Db中使用或。
雖然沒有這樣的事情「或」,「AND」,但你仍然可以使用掃描和filterexpression模擬SQL查詢。
但請記住,如果您正在使用掃描,那麼它意味着整個表格將被提取並處理,同時掃描並不總是在一次迭代中掃描整個表格。所以你可能會錯過一些項目。所以通常避免這種方法,因爲它非常昂貴。但這裏是用boto3 API的python3代碼塊,可以模擬SQL查詢你想
response = table.scan(
FilterExpression=Attr('fname').eq('xxxxx') | Attr('lname').eq('xxxxx'))
filterexpression也不同運營商移動像&,〜
RTFM?文檔是找到這樣的答案的好地方。 – 2012-02-22 05:12:53
http://docs.amazonwebservices.com/amazondynamodb/latest/developerguide/queryingdynamodb.html – Hal 2012-02-22 17:58:19