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

无法在DynamoDb查询中使用IN运算符

罗绪
2023-03-14

问题是我得到错误(过滤器表达式只能包含非主键属性:主键属性:名称)。租户是我的主分区键,名称是我的主排序键。

我需要在dynamo db中编写与此等效的内容:从项目中选择*,其中tenant='testProject',name in('John','Dave')。

query = {
    TableName: 'projects',
    ExpressionAttributeNames: {
        '#tenant': 'tenant',
        '#name' : 'name'
    },
    ExpressionAttributeValues: {
        ":tenant": 'testProject',
        ":user1" : "John",
        ":user2" : "Dave"
    },
    KeyConditionExpression: '#tenant = :tenant',
    FilterExpression: '#name IN (:user1,:user2)'
};

共有1个答案

从焱
2023-03-14

从我写这篇文章的那天起,您不能在关键条件表达式中使用中的,也不能在过滤器表达式中包含关键属性。

执行您想要执行的操作的方法是使用BatchGetItem请求,它允许您为多个项目指定完整的主键。

 类似资料:
  • 我有一张名为产品的桌子。它的架构是 CustomerNumber(字符串类型的哈希键) ProductID(字符串类型的范围键) > DynamodbQueryExpression将只对索引/hashkey进行查询,而不是对hashkey列表进行查询,如上例所示。 此外,DynamoDBQueryExpression不支持OR运算符。 另外,BatchLoad只使用主键(在我的例子中是custom

  • 问题内容: 我正在寻找一种使用数组中的“ IN”子句查询postgres jsonb字段的方法。 假设我有一张桌子 我需要选择test_content数组中的label可能为或的行。 我试过了 但是当我想用包含扩展查询时,或者变得复杂… 我需要的是 jsonb运算符可以吗? 问题答案: 简短答案 您可以在横向联接中使用该函数,并在子句中的复杂表达式中使用其结果: 不同 当在单个行中的多个数组元素中

  • 如何使用节点扫描AWS dynamodb中的所有项目。js。我在这里张贴我的代码。 我已经跟踪了链接https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GettingStarted.NodeJs.04.html 过了一会儿我就有时间离开这里了。我也检查了这个链接,如何使用节点从“AWS dynamodb”获取/扫描所有项

  • 我正在DynamoDB中设计一个表,它将包含大量记录,每个记录都有一个唯一的ID和一个时间戳。我需要检索一组位于两个日期之间的记录,而不管所有其他属性值如何。 为时间戳字段添加全局辅助索引似乎是一个合乎逻辑的解决方案,但这并不简单。 DynamoDB中的Query命令需要一个KeyConditionExpression参数,该参数确定查询返回的结果。从DynamoDB开发人员指南: 要指定搜索条件

  • 问题内容: 我正在尝试在Dropwizard上使用MYSQL JDBI进行IN查询(我认为不相关)。 如这里的建议,我还用 但是,当我启动应用程序时,出现以下错误: 有谁对解决这个问题有个好主意? 问题答案: 有两种方法可以实现它。 1 。使用 该注释期望StringTemplate中具有SQL语句的组文件 说我有这个文件PersonExternalizedSqlDAO 由于我们正在使用,因此必须

  • 问题内容: 我正在尝试使用mybatis运行一个简单的sql查询,但是它给了我以下异常 我的UserMapper.xml是 我的UserMapper是 我试图在我的LoginController中访问它 我的spring-servlet.xml文件是 我不知道为什么会出现此错误。 问题答案: 看看错误 看来myBatis找不到您的查询。那可能是因为找不到您的xml映射。它应该符合您的配置: 在项目