dynamodbjavascript–;按主键和范围键数组进行查询?
DynamoDB新手,需要执行上述查询,但不确定如何执行。这是我目前正在尝试的,下面是我得到的错误 顺便说一句,我正在使用这个javascript库w/DynamoDB: 我得到的错误如下: ValidationException:一个或多个参数值无效:中的ComparisonOperator对于L AttributeValue类型无效 不支持中的dynamodbjavascript–;按主键和范围键数组进行查询?,javascript,node.js,amazon-dynamodb,Javascript,Node.js,Amazon Dynamodb,DynamoDB新手,需要执行上述查询,但不确定如何执行。这是我目前正在尝试的,下面是我得到的错误 顺便说一句,我正在使用这个javascript库w/DynamoDB: 我得到的错误如下: ValidationException:一个或多个参数值无效:中的ComparisonOperator对于L AttributeValue类型无效 不支持中的。KeyCondition的文档说明了它支持的运算符: 对于KeyConditions,仅使用以下比较运算符 支持: EQ|LE|LT|GE|GT|以
。KeyCondition
的文档说明了它支持的运算符:
对于KeyConditions,仅使用以下比较运算符
支持:
EQ
|LE
|LT
|GE
|GT
|以
|开始
EQ
运算符也仅适用于单个值:
EQ
:相等
AttributeValue列表只能包含一个类型为String、Number或Binary(非集合类型)的AttributeValue。如果项包含与请求中指定类型不同的AttributeValue元素,则该值不匹配。例如,{“S”:“6”}
不等于{“N”:“6”}
。而且,{N:“6”}
不等于{NS:[“6”,“2”,“1”]}
对的限制基本相同,这是一种更新的、推荐的键过滤方法。以下是文档中的一个片段(我的重点):
该条件必须对单个哈希键执行相等测试
价值观该条件还可以执行多个比较测试之一
在单个范围键值上。查询可以使用KeyConditionExpression
检索具有给定哈希和范围键值的一个项,或检索多个项
具有相同哈希键值但不同范围键值的项
在您的情况下,可以按照中所述的类似方式构建。使用In语句的唯一方法是使用筛选条件。
但是,筛选器表达式只能包含非主键属性。
因此,您想要实现的查询是而不是主键。
像这样的
var params = {
TableName: 'apps',
...
FilterExpression: "#id IN (:one,:two)",:
...
仅在具有非主键属性时才可能
可以应用的解决方法是使用批处理get
因此,不是发出一个查询,而是在一次调用中发出多个查询,并且每个条件应包含来自ids数组的值
当涉及到批处理获取项目时,请注意读取容量单位()。我也在关注同样的事情,但根据您的链接,FilterExpression不允许使用键属性。不能基于分区键或排序键定义筛选器表达式。
。回到第一步,我也是StevendeSalas,这似乎是一个巨大的限制。你找到解决办法了吗?我将首先执行批处理get,然后在内存中执行任何额外的过滤——但对于一个相当简单的查询来说,这显然是过火了。
var params = {
TableName: 'apps',
...
FilterExpression: "#id IN (:one,:two)",:
...