我正在尝试运行一个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中做到这一点?
看起来关键条件表达式不支持NOT begins_with(x)
。这可能是因为结果集不是连续的(它是x
之前的项目,与x
之后的项目汇总)。
一些可能的解决方案:
gameScoreId
成为一个非键属性(或将其复制到一个新的非键属性),然后你可以查询userId
并过滤gameScoreId
(你不能过滤关键属性),或者