1
我想添加一个属性只有当我添加它的项目不存在。只有在物品已经存在的情况下,我如何才能将属性添加到SimpleDB中的物品?
从我所知道的情况来看,UpdateCondition结构只允许您根据项目的特定属性是否存在指定值进行更新。
我想添加一个属性只有当我添加它的项目不存在。只有在物品已经存在的情况下,我如何才能将属性添加到SimpleDB中的物品?
从我所知道的情况来看,UpdateCondition结构只允许您根据项目的特定属性是否存在指定值进行更新。
Here是执行条件放置的帮助链接。
Help链接使用条件放置只有放置一个属性,如果它不存在。
编辑:
您不能检查项目的存在,但不运行亚马逊的SimpleDB查询。你可以查询一个项目,如果amazon simpledb在请求中没有返回该项目,意味着该项目不存在。 查看示例代码 -
try {
BasicAWSCredentials basicAWSCredentials = new BasicAWSCredentials("<accessKey>", "<secretkey>");
AmazonSimpleDBClient amazonSimpleDBClient = new AmazonSimpleDBClient(basicAWSCredentials);
amazonSimpleDBClient.setEndpoint("sdb.amazonaws.com");
SelectRequest selectRequest = new SelectRequest("select * from `<domainName>` where itemName()='<itemName>'");
SelectResult selectResult = amazonSimpleDBClient.select(selectRequest);
List<Item> itemList = selectResult.getItems();
if (itemList.size() == 0) {
System.out.println("Specified item does not exist.");
List<ReplaceableAttribute> list = new ArrayList<ReplaceableAttribute>();
ReplaceableAttribute replaceableAttribute = new ReplaceableAttribute("<attribute>", "<value>", Boolean.TRUE);
list.add(replaceableAttribute);
PutAttributesRequest attributesRequest = new PutAttributesRequest("<domainName>", "<itemName>", list);
amazonSimpleDBClient.putAttributes(attributesRequest);
} else {
System.out.println("Specified item exist. Do Nothing.");
}
} catch (Exception ex) {
System.out.println(ex.toString());
}
ConditionalPut仅基于属性是否已存在指定值而工作。 –
我已添加详细信息。请检查它是否适用于您的情况。 –
如果在完成select语句后该项目被另一个进程删除,该怎么办? –