2012-02-04 10 views
5

में विशेषता हटाना मैं डायनेमो डीबी में किसी आइटम से एक विशेषता को हटाने का सबसे अच्छा तरीका जानने का प्रयास कर रहा हूं। नीचे मैं क्या करने की कोशिश की है, लेकिन मैं किसी भी प्रकार एन या एसडायनेमो डीबी

अपवाद धागा "मुख्य" स्थिति कोड में के लिए एक समर्थित नहीं है एक अपवाद कह रही है कि DELETE मिलती है: 400, एडब्ल्यूएस सेवा: AmazonDynamoDB, एडब्ल्यूएस अनुरोध आईडी : 09MRO4PVTJ8IK6OHLKSM551REJVV4KQNSO5AEMVJF66Q9ASUAAJG, एडब्ल्यूएस त्रुटि कोड: ValidationException, एडब्ल्यूएस त्रुटि संदेश: एक या अधिक पैरामीटर मान अमान्य हैं: कार्रवाई DELETE प्रकार एन com.amazonaws.http.AmazonHttpClient.handleErrorResponse (AmazonHttpClient.java:544) पर लिए समर्थित नहीं है पर com.amazonaws.http.AmazonHttpClient.executeHelper (AmazonHttpClient.java:284) com.amazonaws.http.AmazonHttpClient.execute (AmazonHttpClient.java:169) > com.amazonaws.services.dynamodb.AmazonDynamoDBCl पर ient.invoke (AmazonDynamoDBClient.java:675) > com.amazonaws.services.dynamodb.AmazonDynamoDBClient.updateItem पर (AmazonDynamoDBClient.java:371)

Key pk = new Key(new AttributeValue().withN(Long.toString(123))); 
AttributeValueUpdate avu = new AttributeValueUpdate(new AttributeValue().withN("555"), "DELETE"); 
Map<String, AttributeValueUpdate> m = new HashMap<String, AttributeValueUpdate>(); 
m.put(String.valueOf(555), avu); 
UpdateItemRequest uir = new UpdateItemRequest("users", pk, m); 
dynamoDB.updateItem(uir); 

एक भ्रम की स्थिति की बात क्यों विशेषता मान मामलों है एक हटाने के लिए। मैं वास्तव में एक विशेषता नाम और किसी भी संबंधित मूल्य को हटाना चाहता हूं, लेकिन एसडीके में ऐसा करने का उचित तरीका नहीं मिला।

सहायता की सराहना की जाएगी।

+1

क्या आप वास्तविक अपवाद –

+0

@Layble पोस्ट कर सकते हैं: खुशी है कि आप इसे स्वयं हल करने में कामयाब रहे - क्या आप कृपया अपना समाधान उत्तर के रूप में पोस्ट कर सकते हैं और इसे स्वीकार कर सकते हैं? अपने स्वयं के प्रश्न के बाद पूरी तरह से उचित और वांछित है, जब तक कि यह पहली जगह में एक वास्तविक खुला प्रश्न रहा है। धन्यवाद :) –

उत्तर

9

मैं शपथ ली हो सकता था मैं पहले से ही करने की कोशिश की, लेकिन यह एक शून्य मान यह काम करता है के साथ AttributeValue की जगह:

Key pk = new Key(new AttributeValue().withN(Long.toString(123))); 
AttributeValueUpdate avu = new AttributeValueUpdate(null, "DELETE"); 
Map<String, AttributeValueUpdate> m = new HashMap<String, AttributeValueUpdate>(); 
m.put(String.valueOf(555), avu); 
UpdateItemRequest uir = new UpdateItemRequest("users", pk, m); 
dynamoDB.updateItem(uir); 
+0

+1 आपके समाधान के साथ निम्नलिखित के लिए, धन्यवाद! –

3

यह भी काम करता है।

Table table = dynamoDB.getTable("users"); 
table.updateItem(new PrimaryKey("<MY HASH KEY NAME>", <MY HASH VALUE>), new AttributeUpdate("columnToRemove").delete()); 

या you can even use Expressions आइटम अपडेट में।

हटाएं - किसी आइटम से एक या अधिक विशेषताओं को हटा दें।

संबंधित मुद्दे