2016-08-18 78 views
0

我有這樣的架構刪除:如何從列表地圖在DynamoDB(必須是原子)

{ 
    product: S // Primary Key, // my Hash 
    media: L // List of Maps 
} 

每個媒體項目會是這樣:

[ 
    { 
     id: S, // for example: id: uuid() 
     type: S, // for example: "image" 
     url: S // for example: id: "http://domain.com/image.jpg" 
    } 
] 

樣本數據:

{ 
    product: "IPhone 6+", 
    media: [ 
     { 
      id: "1", 
      type: "image", 
      url: "http://www.apple.com/iphone-6-plus/a.jpg" 
     }, 
     { 
      id: "2", 
      type: "image", 
      url: "http://www.apple.com/iphone-6-plus/b.jpg" 
     }, 
     { 
      id: "3", 
      type: "video", 
      url: "http://www.apple.com/iphone-6-plus/overview.mp4" 
     } 
    ] 
} 

我希望能夠通過id從媒體列表中刪除。 是這樣的: 「從產品: 'IPhone 6+',刪除媒體ID爲: '2'」

查詢之後,數據應該是這樣的:

{ 
    product: "IPhone 6+", 
    media: [ 
     { 
      id: "1", 
      type: "image", 
      url: "http://www.apple.com/iphone-6-plus/a.jpg" 
     }, 
     { 
      id: "3", 
      type: "video", 
      url: "http://www.apple.com/iphone-6-plus/overview.mp4" 
     } 
    ] 
} 

我應該如何表達像這樣的查詢?我在UpdateItem上看到一篇文章,但我無法找到這個查詢類型的一個好例子。

謝謝!

+0

您能否提供樣本數據?媒體包含的內容和外觀非常清晰。 – notionquest

+0

當然,更新附件... –

回答

1

不幸的是,該API沒有此功能。如果您知道索引,最接近您可以從「列表」數據類型中刪除條目。

我明白,大部分時間索引可能無法使用。但是,如果您沒有任何其他解決方案,則可以查看此替代選項。

您還需要了解,即使DynamoDB開始支持文檔數據類型(如List,Map和Set),也無法執行某些操作。某些功能尚未添加到API中。我相信這種情況就是其中之一。

我已經使用REMOVE刪除列表中的項目。

var params = { 
     TableName : "Product", 
     Key : { 
      "product" : "IPhone 6+" 
     }, 
     UpdateExpression : "REMOVE media[0]",  
     ReturnValues : "UPDATED_NEW" 
    }; 

console.log("Updating the item..."); 
docClient.update(params, function(err, data) { 
    if (err) { 
     console.error("Unable to update item. Error JSON:", JSON.stringify(err, null, 2)); 
    } else { 
     console.log("UpdateItem succeeded:", JSON.stringify(data)); 
    } 
}); 

這只是供大家參考: -

delete運算符只能在SET使用。

刪除 - 刪除集合中的元素。

如果指定了一組值,那麼將從 舊組中減去那些值。例如,如果屬性值是集[a,b,c] ,並且DELETE操作指定[a,c],則最終屬性值 爲[b]。指定一個空集是一個錯誤。

DELETE操作僅支持設置數據類型。另外,DELETE 只能用於頂層屬性,而不能用於嵌套屬性。

相關問題