【问题标题】:DynamoDB use logical evaluation In key condition expressionDynamoDB 在关键条件表达式中使用逻辑评估
【发布时间】:2020-09-05 16:48:24
【问题描述】:

是否可以在 DynamoDB 中对键条件表达式中的排序键使用逻辑评估?

例如,在具有分区键“部门”和排序键“用户”的表上,是否可以在查询上构建键条件表达式,如下所示:

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

【问题讨论】:

  • 我正准备发布确切的问题,但在这里找到了您的问题。在查看此处的文档后:docs.aws.amazon.com/amazondynamodb/latest/developerguide/…,我认为您不能执行这样的复合排序键条件。我认为排序键上的条件是使用他们在那里记录的运算符的单个条件。他们没有在“键条件表达式”部分提及排序键的逻辑操作。

标签: amazon-web-services amazon-dynamodb


【解决方案1】:

是的,绝对可以检查条件表达式中的键。

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

  1. 在 DynamoDB 中,常量(如 'finance' 或 123)绝不是表达式的一部分,而是在单独的参数中给出,ExpressionAttributeValues,然后每个常量在表达式中通过其名称来引用,例如,@ 987654322@。理由是 DynamoDB 已经有一种方法可以在 JSON 中编码不同类型的常量,没有理由再发明另一种方法来在表达式中对这些常量进行编码。
  2. 有些属性名在表达式中也是保留的,所以也可以使用ExpressionAttributeNames,将这些名称称为#name。如果您选择的名称不是保留名称之一,则不必这样做。
  3. 相等运算符是=,而不是eq

【讨论】:

    猜你喜欢
    • 2012-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多