簡體   English   中英

如何在不指定 gsi 鍵的情況下創建 dynamo db 項目

[英]How to create dynamo db item without specifying gsi key

我正在使用使用 gsi 的 dynamo db 表,因此我可以通過附加屬性進行查詢(如果存在)。 此屬性將在流程中更新,因此所有項目在流程開始時都沒有此屬性。 此屬性在添加到項目時設置為 gsi 的主鍵。

除了指定 gsi 的主鍵我無法插入新項目之外,一切都按預期工作。 如果尚未設置其主鍵,我希望 gsi 忽略該項目。 在指定投影屬性時,我認為使用 INCLUDE 選項可以做到這一點。 顯然我在這里弄錯了,但我也不知道如何解決這個問題。

非常感謝任何幫助,而且我將不得不堅持使用 dynamo db,所以包括這個 db 在內的每一個提示都會有很大幫助!

編輯:為了澄清 - 這些是我的屬性:

  • id(主鍵:必填)
  • 名稱(屬性)
  • 年份(屬性)
  • gsi_id(GSI 主鍵:可選)

我想添加一個帶有以下字段的項目:

  • id(主鍵:必填)
  • 名稱(屬性)
  • 年份(屬性)

然后添加 gsi_id 字段。

你的問題的前提是

如果不指定 GSI 的主鍵,我就無法插入新項目。

但是,我認為這個前提是不正確的。 根據我的經驗和文檔,非常允許您將沒有GSI 鍵屬性的項目插入到基表中,並且該項目將被添加到基表中但在索引中丟失 - 正是您想要的發生。

例如,這是文檔中的一個片段:

全局二級索引僅跟蹤其關鍵屬性實際存在的數據項。 例如,假設您向 GameScores 表添加了另一個新項目,但只提供了所需的主鍵屬性。 ... 因為您沒有指定 TopScore 屬性,DynamoDB 不會將此項目傳播到 GameTitleIndex。

請注意,這僅適用於缺少的屬性。 您真正不允許做的事情是在 GSI 鍵屬性中設置錯誤類型的值。 例如,如果 GSI 鍵屬性被定義為“數字”類型,則您不能在該屬性中設置字符串 - 您將在更新操作時收到ValidationException錯誤。 但是完全缺少該屬性是可以的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM