当前位置: 首页 > 面试题库 >

如何使用数组在FilterExpression中使用“ IN”语句-dynamodb

虞承泽
2023-03-14
问题内容

检查了AWS文档,但未找到任何有效示例。

这是我的尝试

var params = {
            TableName: "User",
            IndexName:"a-b-index",
            KeyConditionExpression: "Country = :country and #s = :status",
            FilterExpression: "Id IN (:e)",
            ExpressionAttributeValues: {
              ":country ": "USA",
              ":status": 1,
              ":e": "1"

            },
            ExpressionAttributeNames: {"#s": "Status"}
          };

          //get users
          dynamodb.query(params, function (err, data) {
            if (err)
              //error
            else {
              //success

            }
          });

有记录,但它正在获取具有ID的记录,1但我想使用这样的数组

 var params = {
        TableName: "User",
        IndexName:"a-b-index",
        KeyConditionExpression: "Country = :country and #s = :status",
        FilterExpression: "Id IN (:e)",
        ExpressionAttributeValues: {
          ":country ": "USA",
          ":status": 1,
          ":e": ["1","2","3"]

        },
        ExpressionAttributeNames: {"#s": "Status"}
      };

      //get users
      dynamodb.query(params, function (err, data) {
        if (err)
          //error
        else {
          //success

        }
       });

如何使上面的代码成为work.want以获取记录。语法正确,查询运行没有错误,但我没有记录


问题答案:

请参考这个答案

摘要:-

对于“ IN”子句中的固定数量的值:

var params = {
    TableName : "Users",
    FilterExpression : "username IN (:user1, :user2)",
    ExpressionAttributeValues : {
        ":user1" : "john",
        ":user2" : "mike"
    }
};

对于数组中的更多元素并动态形成FilterExpression:-

var titleValues = ["The Big New Movie 2012", "The Big New Movie"];
var titleObject = {};
var index = 0;
titleValues.forEach(function(value) {
    index++;
    var titleKey = ":titlevalue"+index;
    titleObject[titleKey.toString()] = value;
});

var params = {
    TableName : "Movies",
    FilterExpression : "title IN ("+Object.keys(titleObject).toString()+ ")",
    ExpressionAttributeValues : titleObject
};


 类似资料:
  • 问题内容: 我正在使用iBATIS创建选择语句。现在,我想用iBATIS实现以下SQL语句: 使用以下方法,语句准备不正确,并且没有结果返回: iBATIS似乎重新构建了该列表,并尝试将其解释为字符串。 如何正确使用IN子句? 问题答案: 这是一篇博客文章,回答您的问题: iBatis:使用SQL IN关键字支持数组或列表参数 在Java中,您应该传入java.util.List。例如

  • 问题内容: 我有一个React组件,并且在该组件的方法内部有这样的东西: 现在的要点是,我有两个固定的元素,一个在顶部,一个在底部。在中间,我想有一个switch语句,根据状态下的值,我想渲染一个不同的组件。因此,基本上,我希望两个元素始终固定,并且每次都在中间以呈现不同的组件。我正在使用它来实现多步付款程序)。但是,正如当前的代码一样,它不起作用,因为它给了我一个错误,说这是意外的。有什么想法可

  • 问题内容: 这是我第一次使用JDBCTemplates,并且遇到了需要使用如下查询的情况: 我怎么做?我已经尝试过传递列表/数组值,但是没有成功,我遇到了异常。我当前的代码如下所示: Spring文档指出,除了生成所需数量的“?”之外,没有其他方法可以这样做。占位符以匹配参数List的大小。有解决方法吗? 问题答案: 我认为您不能将其作为单个“?”来完成。与Spring JDBC模板无关,它是核心

  • 问题内容: 我正在寻找某种if语句来控制不同元素的状态。 我已经尝试了以下内容,但无法编译 问题答案: LESS具有用于mixin的保护表达式,而不是单个属性。 因此,您将创建一个像这样的mixin: 并通过调用或(或完全不调用)将其打开或关闭。

  • 问题内容: 如何在JSON中使用if语句这是代码:............................................... .................................................................. 这是必需的结果,如下所示: 实际上,这种方式是错误的,并且会导致JavaScript语法错误。 问题答案: 那是普通的J

  • 问题内容: 我在ODBC提供程序上使用Dapper,众所周知,该提供程序不支持命名参数。对于大多数查询,我使用伪命名参数:。但是,当我尝试 我看到Dapper产生查询 我应该怎么做才能使其正常工作? 问题答案: 这似乎是dapper中的错误。我将尝试将其修复为1.50.2。我已经在这里记录了它(用于跟踪)