当前位置: 首页 > 知识库问答 >
问题:

使用Java和DynamoDBMapper扫描DynamoDB JSON文档

商焕
2023-03-14

我正在使用DynamoDB,并通过将JSON传递给它来存储文档,所有这些都在Java中使用DynamoDBMapper类。

将数据放入表中已经足够简单了。还可以查询表中是否有可用的Hash或Range值。

但是我想用JSON文档对一个值进行扫描(我猜是这样)。我一直在四处寻找例子,但我找不到任何例子,或者至少在使用DynamoDBMapper方法做事时找不到。

那么我认为这是可以做到的,对吗?如果有,有没有人有这样做的例子?具体来说,如何在文档/JSON中指定要查询的属性?

我的表设置有哈希、范围和包含传递给它的JSON的“文档”属性。因此,如果我想检查“文档”中的“名称”值,如何在条件中指定?

下面是我尝试过的一个代码片段示例:

DynamoDBScanExpression scanExpression = new DynamoDBScanExpression();
    scanExpression
            .addFilterCondition(
                    "document.name",
                    new Condition().withComparisonOperator(
                            ComparisonOperator.EQ)
                            .withAttributeValueList(
                                    new AttributeValue()
                                            .withS(existingWebsiteName)));
    List<PublisherSite> scanResult = getMapper().scan(PublisherSite.class, scanExpression);

我也尝试过将attributeName指定为“name”,但这也不起作用。我没有得到任何结果。

共有1个答案

微生毅
2023-03-14

筛选条件仅适用于顶级属性。您的代码段尝试在名为“document.name”的顶级属性上放置FilterCondition。相反,可以使用FilterExpression对嵌套属性的项检索设置条件,也可以使用ProjectionExpression选择所需的顶级和嵌套属性。

final String filterExpression = "document.name = :existingWebsiteName";
final Map<String, AttributeValue> expressionAttributeValues = Collections.singletonMap(":existingWebsiteName", existingWebsiteName);

DynamoDBScanExpression scanExpression = new DynamoDBScanExpression()
    .withFilterExpression("document.name = :existingWebsiteName")
    .withExpressionAttributeValues(expressionAttributeValues);
List<PublisherSite> scanResult = getMapper().scan(PublisherSite.class, scanExpression);
 类似资料:
  • 问题内容: 我有几个需要用名称注释的类,因此我将注释定义为 现在,需要此注释的类定义为 我使用下面的代码来扫描注释 问题是返回的映射包含,但是我需要映射包含作为键,这是Annotation的值而不是bean名称。 有办法吗? 问题答案: 只需获取注释对象并提取值即可 让我知道是否不清楚。

  • 我想从标准输入中读取一个双数,但是我总是得到这个异常: Java . util . inputmismatchexception 如果输入是整数,那没问题,但是如果是双精度的,我会得到异常。 线程“main”Java . util . inputmismatchexception Java . util . scanner . throw for(scanner . Java:864)Java .

  • 本章将会介绍如何使用python去构建一个简单的web扫描器,并且写一个简单的exp。有些时候如果组织会发布出来一些漏洞测试的POC,然后使用者可以使用这些poc去检查自己系统的漏洞,但是在这种情况下,如果是等poc发布出来早以为时已晚! 在第5章的时候告诉了大家基本的web请求,这一章我们讲两个新的内容: 检测特定的服务器列表. 利用一个Oracle的本地包含漏洞. Web扫描 下面的这个脚本使

  • 我正在用Java编程 我正在尝试编写代码,以识别用户是否在基于控制台的程序中按enter键。 我如何使用java做到这一点。有人告诉我,这可以使用Scanner或缓冲输入阅读器来完成。我不明白(或不知道如何使用)缓冲输入阅读器。 我试着用scanner来做这件事,但按了两次enter键后,程序终止,无法工作 谢啦 --编辑--以下代码使用字符串的方法而不是 如何做到这一点,使用缓冲输入读取器的好处

  • 这个代码中的对象扫描仪有什么问题? 当我选择案例2时,我得到了这个错误: 我认为scanner首先声明为int,现在在切换之后,我用类型double收集答案。我不太确定,我需要更多地了解scanner类是如何工作的。

  • 我正在创建一个小算法,这是其中的一部分。 如果用户输入非整数值,我想输出一条消息,让用户再次输入一个数字: 我得到了一个永无止境的循环,我不知道为什么。 如果用户输入非整数数字,我如何识别? 如果用户输入非整数数字,我如何要求用户再次输入? 更新 当我打印异常时,我得到了InputMismatchExctive,我应该怎么做?