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

DynamoDB多个BeginsWith的多扫描条件

宋高寒
2023-03-14

我在dynamoDB中有带分区键和范围键的表。

表结构

Subscriber ID (partition key) | Item Id (Range Key) | Date        |...
123                           | P_345               | some date 1 | ...
123                           | I_456               | some date 2 |
123                           | A_678               | some date 3 | ... 

现在,我想使用QueryAsyncC#库在多个扫描条件下从表中检索数据

  • Hashkey=123
  • 条件1;日期在“某个日期1”和“某个日期2”之间
  • 条件2。范围键begins_with I_和p_

有什么方法可以使用C#dynamoDB API实现这一点吗?请帮忙

共有1个答案

劳和雅
2023-03-14

您需要执行以下操作(我不是C#专家,但您可以使用以下说明来找到正确的C#语法):

  1. 因为您正在查找特定的hashkey,所以这将是查询请求,而不是扫描
  2. 您在range键上有begins_with()条件。您可以使用KeyConditionExpression参数为查询指定。keyconditionexpression将要求hashkey=123和begins_with(RangeKey,“p”)。
  3. 但是,KeyConditionExpression不允许“or”(rangekey以“P_”或“I_”开头)。您只需要运行两个单独的查询--一个使用“i_”,一个使用“p_”(如果愿意,您甚至可以并行执行这两个查询)。
  4. 日期不是键列之一,因此需要使用FilterExpression参数对其进行筛选。请注意,筛选只发生在最后一步,即DynamoDB已经读取了与上面的KeyConditionExpression匹配的所有项之后(如果筛选删除了许多项,而您仍然会为此付出代价,这可能会增加您的成本)。
 类似资料:
  • 我在Amazon DynamoDB表分区键和范围键。 表结构 现在我想使用带有多个扫描条件的C#库从表中检索数据。 HashKey=123 有什么方法可以使用c#dynamoDB API实现这一点吗?请帮忙

  • 我的数据存储在DynamoDB中的单个表“events”中,在下面的模式中,“_id”作为哈希键,“microtime”作为范围键(下面的示例数据):

  • 我有一个类,它创建多个对象,并将它们放入中,如下所示: 我有一个应用程序,它从控制台扫描输入“add”,如果找到,就调用方法,如下所示: 应用程序应该允许用户输入“add”,但在调用方法后,将出现错误“no line found”。 我猜这是因为方法中的没有关闭,然后在需要时重新打开。这是程序的问题吗?如果是,我该如何修复它? 请注意,这个程序还没有完成,因为我将添加一个出售这些股票的销售方法。这

  • 问题内容: 我正在尝试做的是拥有多个具有不同变量的输入。每个变量将是不同方程式的一部分。我正在寻找一种方法来做,我想我有一个主意。我只想知道这是否合法,也许还有更好的方法。 问题答案: 如果每个输入都问相同的问题,则应使用循环和输入数组: 或者如Chip所建议的,您可以从一行中解析输入: 您在正确的轨道上,所做的工作正常。这只是一种更好,更灵活的处理方式。

  • 我们有一个设置,其中各种工作节点执行计算并更新DynamoDB表中的相对状态。该表充当工作节点活动的一种历史记录。看门狗节点需要定期扫描表,并构建一个表示工作节点及其作业的当前状态的对象。因此,我们的应用程序能够扫描表并按时间顺序检索数据(即按时间戳排序)是很重要的。表最终会太大,无法扫描到本地内存进行后期排序,所以我们扫描后无法排序。 从AWS留档读取主键: DynamoDB使用分区键值作为内部

  • 问题内容: 我有一个创建多个对象并将其放入一个类的类,如下所示: 我有一个从控制台扫描输入“ add”的应用程序,如果找到该应用程序,则调用如下所示的方法: 该应用程序应允许用户根据需要多次输入“添加”,但是在add调用该方法后将出现错误“找不到行” 。 我猜这是因为方法中的尚未关闭,然后在需要时重新打开。这是程序的问题吗?如果是,我将如何修复它? 请注意,该程序尚未完成,因为我将添加一种出售这些