2017-05-03 150 views
0

我想我誤解了DynamoDb。我想查詢所有的項目,與JSON的子字段,它匹配我傳遞的標識符。該結構是一樣的東西 -多個項目查詢DynamoDb

{ 
     "messageId": "ced96cab-767e-509198be5-3d2896a3efeb", 
     "identifier": { 
      "primary": "9927fd47-5d33-4f51-a5bb-f292a0c733b1", 
      "secondary": "none", 
      "tertiary": "cfd96cab-767e-5091-8be5-3d2896a3efeb" 
     }, 
     "attributes": { 
      "MyID": { 
       "Type": "String", 
       "Value": "9927fd47-5c33-4f51-a5bb-f292a0c733b1" 
      } 
     } 
} 

我想查詢在DynamoDb所有的項目,有我在傳遞一個身份識別碼的值。我讀過的所有東西似乎都說你需要使用這個鍵,在我的情況下,它是messageId,這對每個條目都是唯一的,而不是我可以使用的值。

希望這是有道理的。

+0

您需要執行'scan'而不是'query'。或者,可以在'MyID.Value'上添加全局二級索引,然後針對該索引運行查詢。 –

回答

0

DynamoDB查詢API只能在知道分區鍵的值的情況下使用。否則,您可能需要使用FilterExpression掃描整個表以找到該項目。

Scanning tables

您只能在標屬性創建GSI。在上述情況下,它是文檔數據類型(即MAP)。所以,GSI無法創建。

+0

那麼DyanamoDB不能像傳統數據庫一樣使用?我仍然認爲我錯過了分區密鑰的一些東西。當然,關鍵需要是獨一無二的,所以我如何使用相同的密鑰存儲多個項目? – P456678