使用 Java 中的过滤器表达式进行 DynamoDb 查询

2024-03-12

我在 AWS 中有一个名为 school-data 的 DynamoDb 表。下面是获取所有带有学校名称的学校的现有代码:

private DynamoDBQueryExpression<School> createQueryBySchoolName(String schoolName) {
    String matchSchoolName = "schoolName = :schoolName";
    Map<String, AttributeValue> schoolNames = new HashMap<>();
    schoolNames.put(":schoolName", new AttributeValue().withS(schoolName));

    return new DynamoDBQueryExpression<School>()
            .withIndexName("schoolName-index")
            .withKeyConditionExpression(matchSchoolName)
            .withExpressionAttributeValues(schoolNames)
            .withConsistentRead(false);
}

上面的查询工作正常。但现在我需要获取具有特定学校名称及其地址的所有学校。因此,下面是表中的 3 列:

id   schoolName  details

详细信息栏中的数据如下所示:

{
"zone": "North",
"type": "Convent",
"address": {
    "id": "138",
    "street1": "123 Street",
    "street2": "456 Road"
}
}

因此,我需要获取名称为“ABC”且地址 street1 为“123 Street”的所有学校。因此,我将上述查询更新如下:

private DynamoDBQueryExpression<School> createQueryBySchoolName(String schoolName) {
    String matchSchoolName = "schoolName = :schoolName";
    Map<String, AttributeValue> schoolNames = new HashMap<>();
    schoolNames.put(":schoolName", new AttributeValue().withS(schoolName));
    schoolNames.put(":streetName", new AttributeValue().withS("123 Street"));


    return new DynamoDBQueryExpression<School>()
            .withIndexName("schoolName-index")
            .withKeyConditionExpression(matchSchoolName)
            .withFilterExpression("details.address.street1 = :streetName")
            .withExpressionAttributeValues(schoolNames)
            .withConsistentRead(false);
}

但是,这不会返回任何数据。你能让我知道我做错了什么吗?


您需要为 DynamoDBQueryExpression 设置 HashKeyValues 并添加页面限制

private DynamoDBQueryExpression<School> createQueryBySchoolName(String schoolName) {
String matchSchoolName = "schoolName = :schoolName";
Map<String, AttributeValue> schoolNames = new HashMap<>();
schoolNames.put(":schoolName", new AttributeValue().withS(schoolName));
schoolNames.put(":streetName", new AttributeValue().withS("123 Street"));


return new DynamoDBQueryExpression<Voucher>()
        .withHashKeyValues(schoolName)
        .withIndexName("schoolName-index")
        .withKeyConditionExpression(matchSchoolName)
        .withFilterExpression("details.address.street1 = :streetName")
        .withExpressionAttributeValues(schoolNames)
        .withConsistentRead(false)
        .withLimit(pPageSize);

}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Java 中的过滤器表达式进行 DynamoDb 查询 的相关文章

  • Java new Date() 打印

    刚刚学习 Java 我知道这可能听起来很愚蠢 但我不得不问 System out print new Date 我知道参数中的任何内容都会转换为字符串 最终值是 new Date 返回对 Date 对象的引用 那么它是如何打印这个的呢 Mo
  • Spring Batch 多线程 - 如何使每个线程读取唯一的记录?

    这个问题在很多论坛上都被问过很多次了 但我没有看到适合我的答案 我正在尝试在我的 Spring Batch 实现中实现多线程步骤 有一个包含 100k 条记录的临时表 想要在 10 个线程中处理它 每个线程的提交间隔为 300 因此在任何时
  • 如何默认将 Maven 插件附加到阶段?

    我有一个 Maven 插件应该在编译阶段运行 所以在项目中consumes我的插件 我必须做这样的事情
  • 如何在 Play java 中创建数据库线程池并使用该池进行数据库查询

    我目前正在使用 play java 并使用默认线程池进行数据库查询 但了解使用数据库线程池进行数据库查询可以使我的系统更加高效 目前我的代码是 import play libs Akka import scala concurrent Ex
  • 制作一个交互式Windows服务

    我希望我的 Java 应用程序成为交互式 Windows 服务 用户登录时具有 GUI 的 Windows 服务 我搜索了这个 我发现这样做的方法是有两个程序 第一个是服务 第二个是 GUI 程序并使它们进行通信 服务将从 GUI 程序获取
  • JAXb、Hibernate 和 beans

    目前我正在开发一个使用 Spring Web 服务 hibernate 和 JAXb 的项目 1 我已经使用IDE hibernate代码生成 生成了hibernate bean 2 另外 我已经使用maven编译器生成了jaxb bean
  • 我可以使用 HSQLDB 进行 junit 测试克隆 mySQL 数据库吗

    我正在开发一个 spring webflow 项目 我想我可以使用 HSQLDB 而不是 mysql 进行 junit 测试吗 如何将我的 mysql 数据库克隆到 HSQLDB 如果您使用 spring 3 1 或更高版本 您可以使用 s
  • 路径中 File.separator 和斜杠之间的区别

    使用有什么区别File separator和一个正常的 在 Java 路径字符串中 与双反斜杠相反 平台独立性似乎不是原因 因为两个版本都可以在 Windows 和 Unix 下运行 public class SlashTest Test
  • Mockito when().thenReturn 不必要地调用该方法

    我正在研究继承的代码 我编写了一个应该捕获 NullPointerException 的测试 因为它试图从 null 对象调用方法 Test expected NullPointerException class public void c
  • Spring @RequestMapping 带有可选参数

    我的控制器在请求映射中存在可选参数的问题 请查看下面的控制器 GetMapping produces MediaType APPLICATION JSON VALUE public ResponseEntity
  • 斯坦福 NLP - 处理文件列表时 OpenIE 内存不足

    我正在尝试使用斯坦福 CoreNLP 中的 OpenIE 工具从多个文件中提取信息 当多个文件 而不是一个 传递到输入时 它会给出内存不足错误 All files have been queued awaiting termination
  • Java TestNG 与跨多个测试的数据驱动测试

    我正在电子商务平台中测试一系列商店 每个商店都有一系列属性 我正在考虑对其进行自动化测试 是否有可能有一个数据提供者在整个测试套件中提供数据 而不仅仅是 TestNG 中的测试 我尝试不使用 testNG xml 文件作为机制 因为这些属性
  • 在 Mac 上正确运行基于 SWT 的跨平台 jar

    我一直致力于一个基于 SWT 的项目 该项目旨在部署为 Java Web Start 从而可以在多个平台上使用 到目前为止 我已经成功解决了由于 SWT 依赖的系统特定库而出现的导出问题 请参阅相关thread https stackove
  • Google App Engine 如何预编译 Java?

    App Engine 对应用程序的 Java 字节码使用 预编译 过程 以增强应用程序在 Java 运行时环境中的性能 预编译代码的功能与原始字节码相同 有没有详细的信息这是做什么的 我在一个中找到了这个谷歌群组消息 http groups
  • 无法捆绑适用于 Mac 的 Java 应用程序 1.8

    我正在尝试将我的 Java 应用程序导出到 Mac 该应用程序基于编译器合规级别 1 7 我尝试了不同的方法来捆绑应用程序 1 日食 我可以用来在 Eclipse 上导出的最新 JVM 版本是 1 6 2 马文 看来Maven上也存在同样的
  • Java列表的线程安全

    我有一个列表 它将在线程安全上下文或非线程安全上下文中使用 究竟会是哪一个 无法提前确定 在这种特殊情况下 每当列表进入非线程安全上下文时 我都会使用它来包装它 Collections synchronizedList 但如果不进入非线程安
  • 声明的包“”与预期的包不匹配

    我可以编译并运行我的代码 但 VSCode 中始终显示错误 早些时候有一个弹出窗口 我不记得是什么了 我点击了 全局应用 从那以后一直是这样 Output is there but so is the error The declared
  • 获取 JVM 上所有引导类的列表?

    有一种方法叫做findBootstrapClass对于一个类加载器 如果它是引导的 则返回一个类 有没有办法找到类已经加载了 您可以尝试首先通过例如获取引导类加载器呼叫 ClassLoader bootstrapLoader ClassLo
  • 当我从 Netbeans 创建 Derby 数据库时,它存储在哪里?

    当我从 netbeans 创建 Derby 数据库时 它存储在哪里 如何将它与项目的其余部分合并到一个文件夹中 右键单击Databases gt JavaDB in the Service查看并选择Properties This will
  • 将 List 转换为 JSON

    Hi guys 有人可以帮助我 如何将我的 HQL 查询结果转换为带有对象列表的 JSON 并通过休息服务获取它 这是我的服务方法 它返回查询结果列表 Override public List

随机推荐

  • 以有效的方式将哈希表转换回字符串数据

    我正在尝试以有效的方式将哈希表转换回键值对 目前我正在使用这个 kv hash GetEnumerator ForEach kv Name Value 有没有办法直接将哈希表转换为键值对 或者我的意思是字符串数据 有ConvertFrom
  • Java 增量流式 JSON 库

    谁能推荐一个 Java 的 JSON 库 它允许我以非阻塞的方式提供传入的数据块 我已读完更好的 Java JSON 库 https stackoverflow com questions 338586 a better java json
  • Android Marshmallow:在运行时更改权限会导致应用程序崩溃

    Marshmallow 重新设计了获取权限 因此 在调用需要权限的方法之前处理权限并且工作正常 但在以下情况下会崩溃 第 1 步 打开应用程序并授予所有必要的权限 第 2 步 单击 主页 按钮 因此应用程序处于后台 第 3 步 在 设置 中
  • 取消共享用户命名空间并使用 newuidmap 设置 uid 映射

    我试图通过试验来更好地理解用户名称空间unshare and newuidmap命令 这些是我运行的命令 root host ls l usr bin newuidmap rwsr xr x 1 root root 32944 May 16
  • Google Chrome、Flash 和 z-index 错误行为

    我必须在包含 flash 视频的 iframe 上显示一个 div div 的 z 索引设置为 9999 但 ifarame 没有任何 z 索引 但 div 位于 Google Chrome 的 Flash 下方 在 IE 7 8 9 和
  • 使用 alloc init 代替 new

    学习 Objective C 并阅读示例代码 我注意到通常使用这种方法创建对象 SomeObject myObject SomeObject alloc init 代替 SomeObject myObject SomeObject new
  • XML 序列化 - 客户端缺少命名空间前缀

    我创建了一个返回对象的 NET Web 服务 例如 getResponse 类 WS 返回以下响应
  • 响应式 Spring 查询参数

    我的 Spring Reactive Web API 应该能够根据查询参数进行过滤 但我正在努力做到这一点 GET v1 address type business 应该返回系统中 业务 类型的所有地址 只是一个示例 因为我没有发布实际要求
  • 与 Microsoft 完全一样生成 BIOS 制造商 HWID(来自 SHA-1 的 GUID)

    SCENARIO 我想学习 在C or VB NET 如何生成硬件 ID 基于微软开发人员为此所做的相同方法 首先 在继续之前 我必须声明这个问题是从另一个问题派生出来的一个更好的具体不同问题 像 Microsoft 一样获取硬件 ID h
  • 使用CSS使表格外边框颜色与单元格边框颜色不同

    我想使用 CSS 设置表格外边框的颜色 那么内部单元格会有不同的边框颜色 我创建了这样的东西 table border collapse collapse border 1px solid black table td border 1px
  • Hibernate 搜索中的重复过滤器

    我知道Lucene中有一个内置的DuplicateFilter 可以对Lucene的结果进行重复数据删除 对于用户在重复率非常高的文档数据库上进行搜索来说 这是一个非常重要的功能 由于我正在使用 Hibernate Search 进行全文索
  • 有没有办法在 SVG 中应用 9-patch/scale-9 原则?

    我想知道是否有一种方法可以制作一个 svg 图形 该图形可以按照与9 patch http developer android com tools help draw9patch html在 Android 上 或者像 flash 中的sc
  • 为什么 sum() 查询返回的结果带有更多小数点?

    上图显示了我的数据库表中名为 igstAmt 的列之一 当我使用查询时 SELECT sum igstAmt as igstAmt FROM salesinvoice 它返回值21616 7500129491有很多小数点 但正确答案是216
  • 使用 JavaScript 获取 Firebase 中子项的 ChildrenCount

    我已经这样做了一个小时了 我只是想获取下面数据库中子项 Success 中的子项数量 类似的 stackoverflow 问题的答案不起作用 我是 Javascript 编程新手 So far I have tried this var c
  • 带有 JavaBean 的 Servlet

    我有一组三个 servlet 每个 servlet 都有一个带有单选按钮的表单 可将 其值传递给下一个 servlet 我想做的是创建一个与 servlet 一起使用的 JavaBean 类 并在从一个 servlet 转到另一个 serv
  • 多平台加密java移动存储系统的思路

    您好 我有一些关于在 Android Blackberry 和 J2ME 上实现加密存储 一种加密文件系统 的问题 请阅读 疑问 部分 我密码学大师们需要您的建议 我知道这个问题有点长 可能太冗长 但请尝试读到最后 我有很多相关的问题 我无
  • raku REPL 在 WIndows 8 下的“cygwin”上似乎没有响应

    I have cygwin在 Windows 8 下 我已经安装并运行raku我理解这就是 Perl6 我想打印一些字符串和数字 但是say不做这项工作 请参阅下面的黑色片段 它只是不做任何事情 与此处描述的不同 hynek0 hynek
  • 如何使这个第一个非空结果函数更加优雅/简洁?

    getFirstNotNullResult 执行一系列函数 直到其中一个返回非空值 如何更优雅 简洁地实现 getNotNullFirstResult object A def main args Array String println
  • 点对点文件传输 C# [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 嘿 我一直在谷歌上寻找 但似乎找不到任何有关点对点传输的信息 基本上 我希望能够将文件从我的计算机发送到
  • 使用 Java 中的过滤器表达式进行 DynamoDb 查询

    我在 AWS 中有一个名为 school data 的 DynamoDb 表 下面是获取所有带有学校名称的学校的现有代码 private DynamoDBQueryExpression