我刚刚开始使用DynamoDB并设置了一个“accounts”表。
我已经设置了一个辅助索引,以便可以查询api用户和用户键。这两个值都不是主键,因为它们都是易变的,并且可以更改。
该表是用
TableName: "Accounts",
KeySchema: [
{ AttributeName: "id", KeyType: "HASH" },
{ AttributeName: "email", KeyType: "RANGE" }
],
AttributeDefinitions: [
{ AttributeName: "id", AttributeType: "S" },
{ AttributeName: "email", AttributeType: "S" }
]
索引为
TableName: 'Accounts',
AttributeDefinitions: [
{AttributeName: 'name', AttributeType: 'S'},
{AttributeName: 'apiKey', AttributeType: 'S'}
],
GlobalSecondaryIndexUpdates: [
{
Create: {
IndexName: "ApiAccounts",
ProvisionedThroughput: {
ReadCapacityUnits: 1, WriteCapacityUnits: 1
},
KeySchema: [
{AttributeName: 'name', KeyType: "HASH"},
{AttributeName: 'apiKey', KeyType: "STRING"}
],
Projection: {
ProjectionType: "KEYS_ONLY"
},
我现在试图通过查询APIAccounts
索引来获取uses帐户。
我在努力
dynamoClient.get({
TableName: 'Accounts',
IndexName: 'ApiAccounts',
Key: {
name: nameKeyArray[0],
apiKey: nameKeyArray[1]
}, callback)
但是我得到了一个错误一个必需的键没有给出值
,这使我认为我不能对索引执行“get”?或者我没有正确地引用索引。谁能帮我澄清一下吗?
名称和API键是唯一的,所以我想尽可能避免查询或扫描
我想从官方文件上看不太清楚。您可以对GSI
索引执行scan
或query
操作,但不能执行getitem
操作。
对于表
中的每个记录/项,它们必须具有唯一的哈希
和范围
键。
即。
// assume dummy api putItem(id, email, name, apiKey)
account.putItem("1", "abc@email.com", "john", "key1") // OK
account.putItem("1", "abc@email.com", "john", "key1") // NOT OK, id and email are table HASH and RANGE keys, must be unique
但是对于index
、hash
和range
键不是唯一的,它们可能包含重复的记录/项。
即。
// assume dummy api putItem(id, email, name, apiKey)
account.putItem("1", "abc@email.com", "john", "key1") // OK
account.putItem("1", "bcd@email.com", "john", "key1") // OK
即。
// assume dummy api putItem(id, email, name, apiKey)
account.putItem("1", "abc@email.com", "john", "key1") // OK
account.putItem("2", "abc@email.com", "john", "key1") // OK
Java
http://docs.aws.amazon.com/awsjavasdk/latest/javadoc/com/amazonaws/services/dynamodbv2/document/index.html
index
实现QueryAPI
和ScanAPI
但不实现GetItemAPI
。
JavaScript
http://docs.aws.amazon.com/awsjavascriptsdk/latest/aws/dynamodb.html#getitem-property
getitem
不接受indexname
作为参数。
http://docs.aws.amazon.com/awsjavascriptsdk/latest/aws/dynamodb.html#查询-属性
query
接受indexname
作为参数。
http://docs.aws.amazon.com/awsjavascriptsdk/latest/aws/dynamodb.html#扫描-属性
scan
接受indexname
作为参数。
我在DynamoDB中有一个表,它有列(1.id、2.item、3.entry time),其中id是主键。我需要在过去24小时内输入到表中的一种类型(有两种类型的项目,让它是A和B,我需要A的计数)的所有项目的计数。有什么办法可以使用二级索引做到这一点吗?我找不到太多与此相关的信息。
我们可以仅用全局辅助索引更新dynamodb项吗? 在上面的代码中,我想要替换键节,并使用一个全局辅助索引更新项,即user_id。
我有一个具有以下属性的dynamo表: ID(数字-主键) 标题(字符串) created_at(数字长) 标记(StringSet-包含一组标记,例如android、ios等,) 我想要能够通过标签查询-让我所有的项目标签Android。我怎么能在Dynamodb里做到这一点呢?似乎只能在ScalarDataTypes(即Number和String)上构建全局辅助索引,而不能在集合内的项上构建全
我有一个现有的表,它有两个字段-主键和全局辅助索引: 既然attributeA作为全局辅助索引,我可以通过为全局辅助索引指定一个值来删除所有项吗?例如,我想删除所有属性为id1的记录-这在Dynamo中是可能的吗? Dynamo提供了关于删除索引本身的文档,但没有特别说明是否可以使用GSI删除多个项
问题内容: 如何从JTable索引获取行?我查看了成员函数,但没有类似getRowAt的东西。有人可以帮忙吗? 问题答案: 表没有“行”对象,因此使用getRow方法无法获得任何结果。 您可以要求获取各个值,将其用于每一列,然后获得完整的行。
问题内容: 我在python中有一个元组(“ A”,“ B”,“ C”,“ D”,“ E”),如何获取特定索引号下的哪个项目? 示例:假设给定0,它将返回A。给定2,将返回C。给定4,它将返回E。 问题答案: 您显示的不是,而是一个(圆括号而不是方括号显示)。但是,无论是索引列表 还是 元组(在索引中获取一项),无论哪种情况,都需要将索引附加在方括号中。 所以: 打印,等等。 元组(不同于列表)是