Amazon web services DynamoDB等价于SQL';s键或属性';不在(“value1”、“value2”…)&x27;

Amazon web services DynamoDB等价于SQL';s键或属性';不在(“value1”、“value2”…)&x27;,amazon-web-services,amazon-dynamodb,aws-sdk,dynamodb-queries,Amazon Web Services,Amazon Dynamodb,Aws Sdk,Dynamodb Queries,我试图从AWS sdk模块中使用AWS.dynamoDB.DocumentClient运行一些dynamoDB操作,但我无法找到一个简单的解决方案来选择属性不等于值数组的项 例如 属性[“值1”、“值2] 这相当于以下形式的简单典型SQL操作: select * from sometable where attribute not in("value1", "value2"...); 在按照文档尝试不同的ScanFilter和QueryFilter之后,

我试图从AWS sdk模块中使用AWS.dynamoDB.DocumentClient运行一些dynamoDB操作,但我无法找到一个简单的解决方案来选择属性不等于值数组的项

例如 属性[“值1”、“值2]

这相当于以下形式的简单典型SQL操作:

select * from sometable where attribute not in("value1", "value2"...);
在按照文档尝试不同的ScanFilter和QueryFilter之后,NE和NOT_包含的AttributeValueList似乎不接受多个值

我希望得到如下所示的结果,而不必定义多个“AND”查询

我已经找到了这个解决方案,但它看起来很笨拙,我必须编写逻辑来创建过滤条件字符串和表达式属性值,因为过滤条件是动态的

FilterExpression: 'answer <> :answer1 AND answer <> :answer2',
        ExpressionAttributeValues : {
            ':answer1' : "test1",
            ':answer2' : "test2"
        }
FilterExpression:'answer:answer1和answer2',
表达式属性值:{
“:answer1”:“test1”,
“:answer2”:“test2”
}
因此,我有两个问题:

  • 有更好的方法吗
  • KeyConditionExpression的字符串有长度限制吗?I 我很确定有,但我似乎找不到关于 关于这一点
  • 没有其他方法可以满足您的需要。如果所有这些值都有共同点,并且您在写入时就知道了这一点,您可以使用某种前缀插入它们,并在其中创建GSI,它们将成为排序键。在这种情况下,您可以在键条件表达式中通过前缀查询它们。否则,您建议的是唯一的选择
  • 4KB用于所有组合表达式。如中所述:
  • 表达式参数包括ProjectionExpression、ConditionExpression、UpdateExpression和FilterExpression

    任何表达式字符串的最大长度为4 KB。例如,ConditionExpression a=b的大小为3字节

  • 没有其他方法可以满足您的需要。如果所有这些值都有共同点,并且您在写入时就知道了这一点,您可以使用某种前缀插入它们,并在其中创建GSI,它们将成为排序键。在这种情况下,您可以在键条件表达式中通过前缀查询它们。否则,您建议的是唯一的选择
  • 4KB用于所有组合表达式。如中所述:
  • 表达式参数包括ProjectionExpression、ConditionExpression、UpdateExpression和FilterExpression

    任何表达式字符串的最大长度为4 KB。例如,ConditionExpression a=b的大小为3字节