DynamoDB:不是以

问题描述 投票:0回答:1

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

我尝试了以下4种评估方法,但没有一种方法可行。每一个都给我一个无效的操作错误。

我尝试过的KeyConditionExpression看起来像这样:

!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中做到这一点?

amazon-web-services amazon-dynamodb
1个回答
0
投票

看起来关键条件表达式不支持NOT begins_with(x)。这可能是因为结果集不是连续的(它是x之前的项目,与x之后的项目汇总)。

一些可能的解决方案:

  1. 使gameScoreId成为一个非键属性(或将其复制到一个新的非键属性),然后你可以查询userId并过滤gameScoreId(你不能过滤关键属性),或者
  2. 扫描表,在这种情况下,您可以应用您想要使用的过滤器表达式(显然,您将对非常大的表有性能问题)
© www.soinside.com 2019 - 2024. All rights reserved.