使用全局二级索引的值作为条件表达式时,是否可以批量写入DynamoDB(使用带有文档API的Java SDK v1.11.1)?
例如,我想发布一个批量更新请求,它会更新GSI library(chron)
library(dplyr)
library(lubridate)
month <- months(dates[chron::is.weekend(dates)])
day <- dates[chron::is.weekend(dates)]
# create data.frame
df <- data.frame(date = day, month = month, year = chron::years(day))
df %>% group_by(year, month) %>% summarize(weekends = floor(n()/2))
# year month weekends
# <dbl> <fctr> <dbl>
#1 2001 April 4
#2 2001 August 4
#3 2001 Dezember 5
#4 2001 Februar 4
#5 2001 Januar 4
#6 2001 Juli 4
#7 2001 Juni 4
#8 2001 Mai 4
#9 2001 März 4
#10 2001 November 4
## ... with 110 more rows
等于某个值的任何项目的属性A,B和C.
这是可能的,还是我必须对GSI进行查询并使用生成的主键进行批量写入?
答案 0 :(得分:3)
少数事情:
我做这样的事情:
// Get keys from GSI
dynamodb.query({
IndexName: 'index',
TableName: 'table',
KeyConditionExpression: 'some expression',
}, (error, rows) =>
// Spin up a bunch of update requests
Promise.all(rows.Items.map((row) => dynamodb.update({
ExpressionAttributeValues: {
':aVal': 'new value for a',
':bVal': 'etc',
':cVal': 'etc',
},
IndexName: 'index',
Key: {
primaryKey: row.primaryKey,
},
KeyConditionExpression: 'primaryKey = :primKey',
UpdateExpression: 'set a = :aVal, b = :bVal, c = :cVal',
}).promise())));
答案 1 :(得分:0)
BatchWriteItem 的行为方式与单独的 PutItem 和 DeleteItem 调用不同。例如,您不能为单个放置和删除请求指定条件。