首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Java和DynamoDBMapper扫描DynamoDB JSON文档

使用Java和DynamoDBMapper扫描DynamoDB JSON文档
EN

Stack Overflow用户
提问于 2015-04-23 19:35:28
回答 1查看 1.9K关注 0票数 1

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

它足够简单,可以将数据放入表中。如果您有可用的哈希值或范围值,还可以查询表。

但是我想(我假设)对JSON文档执行一个值扫描。我一直在寻找示例,但我找不到任何示例,或者至少在使用DynamoDBMapper方式时找不到。

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

我的表设置了一个Hash、Range和一个"document“属性,其中包含传递给它的JSON。那么,如果我想检查"document“中一个"name”值,我该如何在条件中指定呢?

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

代码语言:javascript
运行
复制
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“,但也不起作用。我没有得到任何结果。

EN

回答 1

Stack Overflow用户

发布于 2015-04-28 12:08:59

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

代码语言:javascript
运行
复制
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);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29822246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档