当前位置: 首页 > 知识库问答 >
问题:

DynamoDB:对同一字段进行筛选和排序?

徐昊焜
2023-03-14

我有一个本地索引表,如下所示。

如何进行类似startDate的查询

据我所知,要对结果进行排序,我需要使用InvoiceDateLocalIndex。但如果使用,则会出现错误“筛选器表达式只能包含非主键属性:主键属性:InvoiceDate”

"IndexName": "InvoiceDateLocalIndex",
 "KeySchema": [
  {
     "AttributeName": "FinanceYear",
     "KeyType": "HASH"
  },
  {
     "AttributeName": "InvoiceDate",
     "KeyType": "RANGE"
  }
]

共有1个答案

林雅畅
2023-03-14

实际上,不能在范围键(InvoiceDate)上使用过滤器表达式(filteexpression)。但这样做的原因并不是不能做到,而是为了防止你犯下代价高昂的错误:

要仅请求范围键的一个范围,应使用KeyConditionExpression,而不是FilterExpression

使用KeyConditionExpression更快、更便宜,因为DynamoDB只检索匹配的项,而FilterExpression将读取(并向您收费)整个分区。这就是为什么“范围键”被称为“范围键”-它们允许您有效地请求该键的范围。它们也被称为“排序键”,因为它们不仅仅是范围,实际上是排序的。

 类似资料:
  • 示例文档 索引定义 内部无源过滤的响应良好。 响应包含嵌套属性的所有属性。即开始时间、结束时间和文本行。如何在响应中仅返回endtime和startTime? 查询失败 错误HTTP/1.1 400错误请求内容类型:application/json;字符集=UTF-8内容长度:265 {"错误":{"root_cause":[{"type":"illegal_argument_exception"

  • 我有一个文档索引。我想过滤公共文档或由我的组成员(用户1和3)共享给组的文档。 隐私="公共"或(1,3)中的隐私="组"和user_id) 我可以分开做,但是如何将它们与OR结合起来? 文件: {“id”:1,“user_id”:1, “隐私”:“公共”,“标题”:“为一个人做饭”,} {“id”:3,“user_id”:1, “隐私”:“组”,“标题”:“三的公司”} {“id”:4,“use

  • 问题内容: 如何按其字段之一(例如或)对对象数组进行排序? 问题答案: 使用usort,这是从手册改编而成的示例: 您还可以将任何callable用作第二个参数。这里有些例子: 使用匿名函数(来自PHP 5.3) 从班级内部 使用箭头函数(来自PHP 7.4) 另外,如果要比较数字值,则应使用“比较”功能。

  • 本文向大家介绍对同时包含整数值和小数值的MongoDB字段进行排序,包括了对同时包含整数值和小数值的MongoDB字段进行排序的使用技巧和注意事项,需要的朋友参考一下 要进行排序,请在MongoDB中使用sort()。让我们创建一个包含文档的集合- 在find()方法的帮助下显示集合中的所有文档- 这将产生以下输出- 以下是对包含整数和小数值的MongoDB字段进行排序的查询- 这将产生以下输出-

  • 本文向大家介绍C#使用linq对数组进行筛选排序的方法,包括了C#使用linq对数组进行筛选排序的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#使用linq对数组进行筛选排序的方法。分享给大家供大家参考。具体如下: 希望本文所述对大家的C#程序设计有所帮助。

  • 问题内容: 我有一个Java对象列表,希望根据多个字段进行排序。 是否可以使用或接口根据多个字段对列表进行排序?我看到的所有示例仅根据一个领域进行排序。换句话说,可以按“校园”或“教师”或“建筑”进行排序。我想按“校园”,“教师”,“建筑”(因为它在SQL中存在)进行排序 问题答案: 您的比较器如下所示: 基本上,只要到目前为止已比较的属性相等(),它就会继续比较类的每个连续属性。