2017-03-24 42 views
-1

記錄1:可以在dynamoDB PHP中僅使用散列鍵更新項目?我沒有範圍鍵值

[{ 
    "business_id": 2, 
    "user_id" = 5, 
    "forms": { 
     "f522": { 
      "id": "f522", 
      "is_deleted": 0, 
      "title": "Form 1" 
     }, 
     "f8b6": { 
      "id": "f8b6", 
      "is_deleted": 0, 
      "title": "Form 2" 
     }, 
     "fw56": { 
      "id": "fw56", 
      "is_deleted": 0, 
      "title": "Form 3" 
     } 
    } 
}] 

RECORD2:

[{ 
    "business_id": 3, 
    "user_id" = 1, 
    "forms": { 
     "f788": { 
      "id": "f788", 
      "is_deleted": 0, 
      "title": "Form 11" 
     }, 
     "f6yy": { 
      "id": "f6yy", 
      "is_deleted": 0, 
      "title": "Form 12" 
     }, 
     "f00i": { 
      "id": "f00i", 
      "is_deleted": 0, 
      "title": "Form 13" 
     } 
    } 
}] 

RECORD3:

[{ 
    "business_id": 4, 
    "user_id" = 3, 
    "forms": { 
     "f839": { 
      "id": "f839", 
      "is_deleted": 0, 
      "title": "Form 21" 
     }, 
     "f1bc": { 
      "id": "f1bc", 
      "is_deleted": 0, 
      "title": "Form 22" 
     }, 
     "f6ac": { 
      "id": "f6ac", 
      "is_deleted": 0, 
      "title": "Form 23" 
     } 
    } 
}] 

我有3條記錄存儲在發電機-db表。哈希鍵是business_id,範圍鍵是user_id。表單對象是具有子對象(id,is_deleted,title)的父對象。我不知道user_id的值。但我只有business_id值「2」(這是唯一的,不會在其他記錄business_id中重複)。我想更新記錄2 is_deleted值爲1的id(值是f6yy)。如果可能,請建議查詢。

+0

作爲此問題的一部分回答http://stackoverflow.com/questions/42992783/it-is-possible-to-update-item-without-hash-key-or-range-key-value-in -dynamodb-ph – notionquest

+0

這是https://stackoverflow.com/questions/42992783/it-is-possible-to-update-item-without-hash-key-or-range-key-value-in的確切副本-dynamodb-ph,我無法投票將其作爲重複關閉,因爲另一個尚未得到答覆。 – mkobit

+0

我投票結束這個問題作爲題外話,因爲你在這裏問了一個確切的重複http://stackoverflow.com/questions/42992783/it-is-possible-to-update-item-without-hash-key -or-範圍-鍵 - 值在-dynamodb-PH。如果回答您的問題,請接受答案(注意:由於它沒有被接受的答案,因此不能重複關閉) – tddmonkey

回答

0

不,這是不可能的。

但是作爲替代路線,您可以通過替換新值來更新整個值。

0

首先,AWS sdk for dynamodb需要更新操作的兩個鍵值,因此兩個鍵都是必需的,因爲只能使用兩個鍵才能識別條目。

其次:你剛纔提到

如果USER_ID和business_id的映射是這樣的:沒有2個用戶可以有相同的business_id(這是唯一在其他記錄business_id不再重複。)那麼你可以使用business_id作爲主鍵,而不是使用user_id作爲排序/範圍鍵(因爲有​​一個範圍鍵是可選的)。 user_id字段將仍然存在,但不再是範圍鍵。

如果不是這種情況,你可以做的只是再次使用一個鍵[上面提到的主鍵(business_id)]並存儲user_id以及表單對象。我在這裏假設表單對象與具有business_id的user_id相關。

新的架構將是這個樣子

{ "Record1": [ 
      { 
       "business_id": 2, 
       "forms": 
       [ 
        { 
        "user_id" : 5, 
        "f522": { "id": "f522", "is_deleted": 0, "title": "Form 1" }, 
        "f8b6": { "id": "f8b6", "is_deleted": 0, "title": "Form 2" }, 
        "fw56": { "id": "fw56", "is_deleted": 0, "title": "Form 3" } 
        } 
       ] 
      } 
] 
} 

的更新操作,現在變成不平凡的,

  1. ,所以你必須首先得到的條目。
  2. 通過迭代和更改自己更新它。
  3. 然後使用更新操作或簡單的putItem與新對象。
相關問題