Amazon web services DynamoDB在关键条件表达式中使用逻辑求值

Amazon web services DynamoDB在关键条件表达式中使用逻辑求值,amazon-web-services,amazon-dynamodb,Amazon Web Services,Amazon Dynamodb,在DynamoDB中,是否可以对键条件表达式中的排序键使用逻辑求值 例如,在分区键为“department”和排序键为“user”的表上,是否可以在查询上构建键条件表达式,如下所示: department eq ‘finance’ and (user eq ‘123’ OR user eq ‘321’) 是的,当然可以检查条件表达式中的键 但是您的示例没有正确的语法。关于语法的一些注释: 在DynamoDB中,常量(如“finance”或123)从来都不是表达式的一部分,而是在单独的参数Exp

在DynamoDB中,是否可以对键条件表达式中的排序键使用逻辑求值

例如,在分区键为“department”和排序键为“user”的表上,是否可以在查询上构建键条件表达式,如下所示:

department eq ‘finance’ and (user eq ‘123’ OR user eq ‘321’)

是的,当然可以检查条件表达式中的键

但是您的示例没有正确的语法。关于语法的一些注释:

  • 在DynamoDB中,常量(如“finance”或123)从来都不是表达式的一部分,而是在单独的参数
    ExpressionAttributeValues
    中给出的,然后在表达式中按其名称引用每个常量,例如
    :val
    。其基本原理是DynamoDB已经有了一种在JSON中编码不同类型常量的方法,没有理由发明另一种在表达式中编码这些常量的方法
  • 一些属性名称也保留在表达式中,因此您也可以使用
    ExpressionAttributeNames
    ,并将这些名称称为
    #name
    。如果您选择的名称不是保留名称之一,则不必执行此操作
  • 相等运算符是
    =
    ,而不是
    eq

  • 我正准备发布准确的问题,在这里找到了你的问题。在阅读了这里的文档之后,我认为您无法实现这样的复合排序键条件。我认为排序键上的条件是一个使用他们在那里记录的运算符的单一条件。在“键条件表达式”部分中,它们没有提到排序键的逻辑操作。