查询 DynamoDB

2024-03-01

我有一个 DynamoDB 表,其中一个字母数字字符串作为哈希键(例如“d4ed6962-3ec2-4312-a480-96ecbb48c9da”)。我需要根据表中的另一个字段查询表,因此我需要查询来选择所有键,例如我的字段 x 位于 dat x 和日期 y 之间。

我知道我需要一个关于散列键的条件和另一个关于范围键的条件,但是我很难编写一个不将我的查询绑定到特定 ID 的散列键条件。

我以为我可以摆脱基于 ID NOT_NULL 的冗余条件,但是当我使用它时,我收到错误:

不支持查询关键条件

以下是我正在使用的条件,知道如何实现这个目标吗?

 Condition hashKeyCondition = new Condition()
 .withComparisonOperator(ComparisonOperator.NOT_NULL.toString());

Condition rangeCondition = new Condition()
.withComparisonOperator(ComparisonOperator.BETWEEN.toString())
.withAttributeValueList(new AttributeValue().withS(dateFormatter.print(lastScanTime())), 
new AttributeValue().withS(dateFormatter.print(currentScanTime)));

Map<String, Condition> keyConditions = new HashMap<String, Condition>();
keyConditions.put("userId", hashKeyCondition);
keyConditions.put("lastAccesTime", rangeCondition);

预先感谢大家的帮助。


在 DynamoDB 中,您可以使用 3 个 api 获取项目:

. Scan http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Scan.html(灵活但昂贵),

. Query http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Query.html(不太灵活:你必须指定一个哈希值,但成本较低)

. GetItem http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html(按哈希,如果您的表有的话,按范围)

实现您想要的唯一方法是:

  1. 使用扫描,但速度慢或昂贵。

  2. 使用另一个表 (B) 作为前一个表 (A) 的索引,如下所示:

    B.HASH = '值' B.RANGE = 用户 ID
    B.lastAccesTime = lastAccesTime(带有二级索引)

现在您必须在写入时维护该索引,但您可以将其与查询操作一起使用, 获取您的用户 ID。查询B:hash='VALUES',x和y之间的lastaccessTime,选择userid。

希望这可以帮助。

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

查询 DynamoDB 的相关文章

随机推荐

  • 无法使用 MFMailComposeViewController 在应用程序中发送电子邮件

    我有一个应用程序使用MFMailComposeViewController通过电子邮件发送文档 我在某处读到我需要启用至少一封电子邮件 以便该方法 MFMailComposeViewController canSendEmail 将返回 Y
  • 在 BeautifulSoup 中处理无限滚动 UI

    我正在研究如何抓取 Linkedin 源代码 https www linkedin com mynetwork invite connect connections https www linkedin com mynetwork invi
  • 当“使用其他帐户”登录时,Google Sign in 不会返回任何结果

    这似乎是一个基本功能 但遵循登录教程 https developers google com identity sign in android sign in 仅当我选择设备上已注册的帐户时 它才有效 选择后 使用另一个帐户 并完成一些步骤
  • 使用 jQuery fadeIn 和 fadeOut 的 Google Maps API V3 InfoBox

    我在网上到处搜索 但找不到使用 jQuery 淡出 Google 地图中的 InfoBox InfoWindow 的教程或示例 而不是实际框 窗口的内容 这是我的代码 我不确定我做错了什么 但有些东西似乎也不正确 google maps e
  • 通过 Windows Scheduler 运行 python 脚本不起作用

    我正在尝试通过 Windows 任务计划程序自动执行 python 脚本 但它不起作用 在我的 python 脚本的末尾 应该创建两个 CSV 文件 但没有创建 我尝试了以下方法 1 将我的python exe的地址复制到Program S
  • 将 Tensorflow 数据集 API 创建的数据集拆分为训练和测试?

    有谁知道如何将 Tensorflow 中的数据集 API tf data Dataset 创建的数据集拆分为测试和训练 假设你有all dataset的变量tf data Dataset type test dataset all data
  • 使用缓存文件还是一个以上的 HTTP 请求?

    在所有 加速你的网站 网站和书籍上 他们总是告诉我们不惜一切代价尽量减少 HTTP 请求 这很好 但如果这意味着在每个页面上你都必须一次又一次地重新加载 120kb 因为用户缓存是空的怎么办 如果我在网站的每个页面上使用 5 个 js 文件
  • Chrome 调试器 - 如何关闭 console.log 消息分组?

    比如说 在我的 Google Chrome 扩展中我这样做 console log msg Chrome 调试器将类似的消息分组如下 有没有什么办法可以将其关闭并让消息按原样发布 它只会折叠相同的连续行 我不认为这有什么问题 但是通过控制台
  • Powershell 5 中的哪些变化改变了块大括号的含义

    我们最近将构建服务器上的 Powershell 版本从 4 0 更新到了 5 0 这一更改导致我们的一个构建脚本开始以意外的方式失败 该代码用于确定我们的产品中应包含哪些用户指南 该代码处理一个 xml 节点列表 这些节点描述了所有可用文档
  • Java 中包私有类的改进

    根据我的经验 Java 中类的包私有可见性被证明是多余的 包私有可见性似乎基于这样一个前提 几乎被另一个类私有使用的类很可能保存在同一个包中 通常情况并非如此 有人正在探索改进的访问修饰符 替代机制吗 尝试使用包私有可见性时出现问题 我们很
  • 在 apache 模块中转换 PHP 类

    我在 php5 中编写了一个复杂的系统 许多类使用静态方法并包含其他文件 现在我想分发 ant 我会选择模块方式 所以我喜欢创建一个像 myFramework so 这样的模块并将其包含在 Apache 中 也许 之后 当我编写一些 php
  • Angular AOT 和 Rollup - 未捕获的 ReferenceError:未定义导出

    我正在尝试实现 Angular 的 AOT 教程 https angular io docs ts latest cookbook aot compiler html https angular io docs ts latest cook
  • 比较匹配器在混合数字类型上失败

    在普通 Scala 中 以下断言通过 assert 1D gt 0F assert 1F gt 0 assert 1L gt 0 assert 1 gt 0 toShort assert 1 toShort gt 0 toChar 然而 S
  • XSLT 连接字符串,删除最后一个逗号

    我需要使用 XSLT 构建一个字符串 并用逗号分隔每个字符串 但在最后一个字符串后面不包含逗号 在下面的示例中 如果我有 分发 节点而不是 注释 节点 那么我将有一个尾随逗号 我不知道如何构建一个字符串作为变量 然后截断 XSLT 中的最后
  • 让php将句子分解为单词

    我可能误解了文档 但是当我编码时 explode here s a sentence 2 我最终 Array 0 gt here s 1 gt a sentence with a few words in it 有没有办法让爆炸回来 Arr
  • 为什么这段 PHP 代码只回显“Array”?

    这是我的代码 if isset POST check AND POST check First errormessage array if empty POST full name strlen POST full name lt 4 er
  • Windows服务“自托管”WCF:压缩?

    在 IIS 中使用 WCF 压缩我可以找到文档 但它面向使用 IIS 功能 我可以找到人们谈论他们如何编写自己的压缩处理程序 但这一切看起来都很定制 是否有压缩 WCF 的最佳实践 我们正在使用 http 绑定 编辑 将其设置为维基 没有任
  • Dart 中的字符串文字类型类似物

    我知道在 Dart 中没有字符串文字类型 例如 interface IButtonProps readonly variant primary secondary readonly size small regular big a litt
  • 以编程方式添加来自 Laravel 包的 CSRF 检查的异常

    问题简而言之 我正在寻找一种方法来删除VerifyCsrfToken来自包内的全局中间件管道without用户必须修改App Http Middleware VerifyCsrfToken 这可能吗 用例 我正在开发一个包 可以轻松地将推送
  • 查询 DynamoDB

    我有一个 DynamoDB 表 其中一个字母数字字符串作为哈希键 例如 d4ed6962 3ec2 4312 a480 96ecbb48c9da 我需要根据表中的另一个字段查询表 因此我需要查询来选择所有键 例如我的字段 x 位于 dat