查询操作的键条件表达式 您所在的位置:网站首页 dynamodb查询数据举例 查询操作的键条件表达式

查询操作的键条件表达式

2024-07-13 12:07| 来源: 网络整理| 查看: 265

查询操作的键条件表达式

要指定搜索条件,请使用键条件表达式—用于确定要从表或索引中读取的项目的字符串。

您必须指定分区键名称和值作为等式条件。无法在键条件表达式中使用非键属性。

您可选择为排序键提供另一个条件(如果有)。排序键条件必须使用下列比较运算符之一:

a = b — 如果属性 a 等于值 b,则为 true

a < b — 如果 a 小于 b,则为 true

a b — 如果 a 大于 b,则为 true

a >= b — 如果 a 大于等于 b,则为 true

a BETWEEN b AND c — 如果 a 大于或等于 b,且小于或等于 c,则为 true。

以下函数也受支持:

begins_with (a, substr)— 如果属性 a 的值以特定子字符串开头,则为 true。

以下 AWS Command Line Interface (AWS CLI) 示例将演示键条件表达式的用法。这些表达式使用占位符(例如 :name 和 :sub)而不是实际的值。有关更多信息,请参阅DynamoDB 中的表达式属性名称和表达式属性值。

在 Thread 表中查询特定的 ForumName(分区键)。具有 ForumName 值的所有项目将由查询进行读取,因为排序键 (Subject) 未包括在 KeyConditionExpression 中。

aws dynamodb query \ --table-name Thread \ --key-condition-expression "ForumName = :name" \ --expression-attribute-values '{":name":{"S":"Amazon DynamoDB"}}'例

在 Thread 表中查询特定的 ForumName(分区键),但这一次仅返回具有给定 Subject(排序键)的项目。

aws dynamodb query \ --table-name Thread \ --key-condition-expression "ForumName = :name and Subject = :sub" \ --expression-attribute-values file://values.json

--expression-attribute-values 的参数存储在文件 values.json 中。

{ ":name":{"S":"Amazon DynamoDB"}, ":sub":{"S":"DynamoDB Thread 1"} }例

在 Reply 表中查询特定的 Id(分区键),但仅返回其 ReplyDateTime(排序键)以特定字符开头的项目。

aws dynamodb query \ --table-name Reply \ --key-condition-expression "Id = :id and begins_with(ReplyDateTime, :dt)" \ --expression-attribute-values file://values.json

--expression-attribute-values 的参数存储在文件 values.json 中。

{ ":id":{"S":"Amazon DynamoDB#DynamoDB Thread 1"}, ":dt":{"S":"2015-09"} }

您可以在键条件表达式中使用任意属性名称,前提是第一个字符是 a-z 或 A-Z,其余字符(从第二个字符开始,如果存在)为 a-z、A-Z 或 0-9。此外,属性名称不得为 DynamoDB 保留字。(有关这些保留关键字的完整列表,请参阅DynamoDB 中的保留字。) 如果属性名称不满足这些要求,则您必须将表达式属性名称定义为占位符。有关更多信息,请参阅 DynamoDB 中的表达式属性名称。

对于具有给定分区键值的项目,DynamoDB 会将这些项目存储在紧邻位置并按照排序键值对其进行排序。在 Query 操作中,DynamoDB 按照排序顺序检索项目,然后使用 KeyConditionExpression 和可能存在的任何 FilterExpression 处理项目。只有在此时才会将 Query 结果发送回客户端。

Query 操作始终返回结果集。如果未找到匹配的项目,结果集将为空。

Query 结果始终按排序键值排序。如果排序键的数据类型为 Number,则按照数值顺序返回结果。否则,按照 UTF-8 字节的顺序返回结果。默认情况下,系统按升序排序。要颠倒顺序,请将 ScanIndexForward 参数设置为 false。

单个 Query 操作最多可检索 1 MB 的数据。在向结果应用任何 FilterExpression 或 ProjectionExpression 之前,将应用此限制。如果 LastEvaluatedKey 包含在响应中且为非 null 值,则您必须为结果集分页(请参阅对表查询结果分页)。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有