【问题标题】:DynamoDB Java SDK query to match items in a listDynamoDB Java SDK 查询以匹配列表中的项目
【发布时间】:2022-09-28 18:45:57
【问题描述】:

我正在尝试在 dynamoDB 中使用 SQL IN 子句类型的功能。我尝试使用withFilterExpression,但我不知道该怎么做。我看了类似的问题,因为它们太老了。有没有更好的方法来做到这一点?这是我得到的代码段。我以静态列表为例,但它实际上是动态的。

def getQuestionItems(conceptCode : String) = {

  val qIds = List(\"1\",\"2\",\"3\")

  val querySpec = new QuerySpec()
  .withKeyConditionExpression(\"concept_id = :c_id\")
  .withFilterExpression(\"question_id in :qIds\") // obviously wrong
  .withValueMap(new ValueMap()
    .withString(\":c_id\", conceptCode));
 questionsTable.query(querySpec);
}

我需要传递 qID 列表来获取类似于 SQL 查询中的 IN 子句的结果。

    标签: amazon-dynamodb aws-sdk dynamodb-queries


    【解决方案1】:

    请参考this answer。基本上你需要动态形成键列表/值列表

    .withFilterExpression("question_id in (:qId1, :qId2, ... , :qIdN)")
    .withValueMap(new ValueMap()
        .withString(":qId1", ..) // just do this for each element in the list in a loop programmatically
        ....
        .withString(":qIdN", ..)
    );
    

    请注意,“IN”中的 maxItems 有限制

    【讨论】:

      猜你喜欢
      • 2021-05-17
      • 2019-09-05
      • 1970-01-01
      • 2018-03-14
      • 2022-08-11
      • 1970-01-01
      • 2021-09-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多