java - DyanmoDB 查询以使用非分区键获取项目
问题描述
我需要根据订单 ID(不是分区键)从 dynamodb 获取项目。
如果订单 ID 是123456,如上例中所述,我应该得到这个项目。
有人可以让我知道是否有可能实现这一目标。如果是,如何?
DynamoDB 表
@DynamoDBTable(tableName="SomeTable")
public class SomeTable {
private String id;
private String name;
private List<Order> orders;
@DynamoDBHashKey(attributeName="id")
public String getId() {
return id;
}
}
2 级
@DynamoDBDocument
public class Order {
private String id;
private String name;
}
DynamoDB 表数据
"Items": [
{
"orders": {
"L": [
{
"M": {
"name": {
"S": "xyz"
},
"id": {
"S": "123456"
}
}
}
]
},
"id": {
"S": "789"
},
"name": {
"S": "abcd"
}
}
解决方案
不要Scan
一个Query
https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Scan.html
当您进行扫描时,您AttributeValue
需要成为一个String Set
,而不仅仅是一个String
。
在您使用FilterExpression
https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition.html 的条件CONTAINS
AttributeValue
推荐阅读
- neural-network - 如何初始化固定权重
- html - 为什么我的 div 中没有显示背景颜色?
- ios - 为什么 Xcode 有 30 GB 的缓存和索引文件
- python - 为什么在运行时覆盖对象的 __str__ 不起作用?
- php - 使 WooCommerce 结帐运输字段可见并删除“运送到不同地址?” 复选框
- flutter - 使用 Painter 类向容器添加自定义装饰
- openid-connect - OpenIdConnectAuthenticationHandler:message.State 为 null 或空,连接到任何 OIDC 服务器时;尝试了其中的几个
- html - 在 PL/SQL 中将电子邮件中的文本加粗
- forms - SwiftUI 表单导航按钮样式
- prolog - 如何安全地临时更改发生检查标志?