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

DynamoDB:不以开头

梁丘威
2023-03-14

我正在尝试运行一个DynamoDB查询,该查询说我想要不以特定值开头的项目。我似乎找不到这样做的方法。

我尝试了以下4种评估方法,但都不管用。每一个都给我一个无效的运算符错误。

我已经尝试过的我的关键条件表达式如下所示:

!begins_with(gameScoreId, :scoreScore) AND !begins_with(gameScoreId, :scoreLevel) AND userId = :userId

<>begins_with(gameScoreId, :scoreScore) AND <>begins_with(gameScoreId, :scoreLevel) AND userId = :userId

NOT begins_with(gameScoreId, :scoreScore) AND NOT begins_with(gameScoreId, :scoreLevel) AND userId = :userId

begins_with(gameScoreId, :scoreScore) = false AND begins_with(gameScoreId, :scoreLevel) = false AND userId = :userId

如果删除not运算符,则会出现以下错误:

KeyConditionExpressions每个键只能包含一个条件

在dynamodb中有这样做的方法吗?

共有2个答案

蓬弘
2023-03-14
        .withFilterExpression("NOT begins_with(hashKey, :hKey)")
        .withExpressionAttributeValues(ImmutableMap.of(
                ":hKey", new AttributeValue().withS("somePrefix:")))

在使用过滤器表达式时,这似乎适用于我。我认为你的问题更多的是在一个键上使用更多的条件。

松俊美
2023-03-14

键条件表达式似乎不支持以(x)开头的非。这可能是因为结果集不是连续的(它是x之前的项目,与x之后的项目聚合在一起)。

一些可能的解决方案包括:

  1. 将gameScoreId设置为非关键属性(或将其复制为新的非关键属性),然后可以查询用户ID并过滤gameScoreId(不能过滤关键属性),或
  2. 扫描表,在这种情况下,您可以应用要使用的过滤器表达式(显然,对于非常大的表,您会有性能问题)
 类似资料:
  • Amazon DynamoDB是一个完全托管的NoSQL数据库服务,允许创建可以存储和检索任意数量数据的数据库表。 它自动管理多个服务器上的表的数据流量并保持性能。 它还使客户免于操作和扩展分布式数据库的负担。 因此,亚马逊管理硬件配置,设置,配置,复制,软件修补,群集扩展等。 如何在计算机上运行DynamoDB? 以下是设置DynamoDB的步骤。 Step 1 - 以下是设置DynamoDB的

  • 我在CentOS 7中使用yum安装了MariaDB。 SonarQube抛出此异常: 当我用版本10重新安装MariaDB时,SonarQube仍然会抛出相同的异常。 SonarQube-5.5如何检测MySQL版本? MariaDB 10的API与MySQL 5.6兼容,CentOS 7已经用MariaDB取代了MySQL。 为什么它不支持MariaDB 10?

  • 我们正在开发一个基于Spring的微服务,它需要与DynamoDB和MySQL一起工作。我举了一个简单的“Spring中的DynamoDB”的例子,一切都很好。然后我想添加MySQL部分,但当我将其添加到pom时。xml Spring停止了工作,抱怨不是托管类型:

  • DynamoDB 是 Amazon最新发布的 NoSQL 产品。DynamoDB是一个性能好、可靠高且具有可扩展性的 NoSQL 云数据库服务,DynamoDB集15年分布式非关系性数据库开发之精粹,又通过内部使用考验,是AWS团队精心打造的产品。 DynamoDB有以下几个特性: 稳定的性能保证。为了保证高性能,DynamoDB采用固态硬盘(SSD)进行存储,对于一般的请求,DynamoDB在十

  • 从AWS上阅读,似乎DynamoDB UpdateItem能够向现有项添加属性。 例如,如果我有一个item-primary key:UserID,它有几个属性,比如member:1member:2member:3 *属性的关键成员是否需要唯一?如果是这样,当项目的内容只是一个成员号码列表(他们在系统中的朋友)时,有没有办法使其独一无二? THX

  • DynamoDB配置概述。 { "name": "http_dynamo_filter", "config": {} } name (required, string) 过滤器名称。目前唯一支持的值是http_dynamo_filter。 config (required, object) 该过滤器不使用任何配置。 返回 上一级