实际上,我正在使用DynamoDBmapper查询我的dynamo表。为此,我创建了两个类,映射程序使用它们转换表返回的查询。见下文
ame.java
@DynamoDBTable(tableName = "customer_table")
public class CustomerTable {
@DynamoDBHashKey(attributeName = "customer_id")
String customerId;
@DynamoDBIndexHashKey(attributeName = "customer_id_bis", globalSecondaryIndexName = "customer_id_bis-index")
String customerIdBis;
@DynamoDBIndexHashKey(attributeName = "customer_id_tier", globalSecondaryIndexName = "customer_id_tier-index")
String customerIdTier;
@DynamoDBAttribute(attributeName = "salutations")
List<Salutations> salutations;
}
java
@DynamoDBDocument
public class Salutations {
@DynamoDBAttribute(attributeName = "salutations_id")
private String salutationsId;
@DynamoDBAttribute(attributeName = "rank")
private Integer rank;
@DynamoDBAttribute(attributeName = "score")
private String score;
@DynamoDBAttribute(attributeName = "typos")
private List<String> typos;
}
然后我在HashKey上查询我的表,如下所示
Map<String, AttributeValue> keyToGet = Map.of(":column", new AttributeValue(value));
DynamoDBQueryExpression<CustomerTable> queryExpression = new DynamoDBQueryExpression<CustomerTable>()
.withKeyConditionExpression("customer_id = :column")
.withExpressionAttributeValues(keyToGet);
mapper.query(CustomerTable.class, queryExpression);
对于GSI,我会这样做
Map<String, AttributeValue> keyToGet = Map.of(":column", new AttributeValue(value));
DynamoDBQueryExpression<CustomerTable> queryExpression = new DynamoDBQueryExpression<CustomerTable>()
.withIndexName("customer_id_bis-index")
.withKeyConditionExpression("customer_id_bis = :column")
.withConsistentRead(false)
.withExpressionAttributeValues(keyToGet);
mapper.query(CustomerTable.class, queryExpression);
一切都很好,但是对于名为typos的字段,我得到了两个查询之间的差异。对于customer_id,我获得如下完整元素
{
"customer_id":"jean",
"customer_id_bis":"paul",
"customer_id_tier":"sartre",
"salutations": [{
"salutations_id": "12345",
"rank": 1,
"score": "0.6796357154846191",
"typos": [
"185",
"198",
"199"
]
}]
}
但对于同一个用户,但使用他的GSI,我得到如下结果
{
"customer_id":"jean",
"customer_id_bis":"paul",
"customer_id_tier":"sartre",
"salutations": [{
"salutations_id": "12345",
"rank": 1,
"score": "0.6796357154846191",
"typos": []
}]
}
我不明白为什么我对同一个用户得到不同的结果。
我对Dynamo DB非常陌生,可能这是一个非常琐碎的问题,但我浏览了Dynamo DB和堆栈溢出问题的文档,但我找不到一个链接来告诉如何为GSI查询DDB,GSI只有哈希键,没有指定范围键。 我得到异常非法查询表达式:在查询中没有找到哈希键条件。
当前使用DynamoDBmapper和DynamoDBQueryExpression查询全局辅助索引、按排序索引排序并返回前n个结果的方法是什么? 关于在GSI上执行查询的当前正确方式的建议? 非常感谢!
在RoboMongo(0.9.0-RC09)中运行以下mongo查询会给出正确的文档数量(使用游标计数函数),而迭代所有文档只会返回一小部分文档: 我们是否需要专门配置查询以返回所有文档?
当我使用System.out.println静态方法时,下面的Java程序显示ArrayList中的所有元素。但是,当我在方法中返回列表时,它只显示ArrayList中的一个元素。我希望你能给我一些指点,让我知道你做错了什么:
问题内容: 我正在尝试使用以下查询获取每天打开的页面数。 我得到的输出是这样的: 问题是,在我的日表中,我有一列包含数字1到30来表示一个月中的天数。我进行了左外部连接,希望在天数列中显示所有天数! 但是我的查询正在这样做,为什么会这样呢? 谢谢大家的帮助。 问题答案: 解决方案是将WHERE更改为AND,以便该条件成为联接条件的一部分,而不是联接之后应用的过滤器: 现在,左表中的所有行都将出现在
当我尝试时,我得到以下响应: 当我尝试从本地vuejs应用程序调用云函数时,我会得到以下错误: