amazon-web-services - Dynamodb 可以使用两个 GSI 进行查询吗?

标签 amazon-web-services amazon-dynamodb

感谢您花时间阅读我的问题。

我的场景是这样的。我在 dynamodb 中有一个地理点表。

它包括:
object_type(字符串哈希)
id(字符串范围)
纬度(数字 GSI 范围)
lng(编号 GSI 范围)

它有以下索引:
object_type-lat-index(object_type-hash 纬度范围)
object_type-lng-index(object_type-hash lng-range)

我想做的事:IndexName: "object_type-lat-index", KeyConditionExpression: "object_type=:otype AND (lat BETWEEN :llat AND :glat) AND (lng BETWEEN :llng AND :glng)", 我希望能够通过获取最小纬度和更大纬度之间以及最小 lng 和更大 lng 之间的关系来查询 lat 和 lng

我似乎无法在 dynamodb 文档中找到它。这可以完成还是我正确实现它?因为错误返回类似“只能有 1 或 2 个条件”之类的内容

最佳答案

http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.html#GSI.Querying

http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html

它的工作方式是查询针对表本身(表中定义的键)或 GSI。您不能在同一查询中组合多个 GSI 和表 HK。

这里有2个选项:
1)对2个索引执行2次查询,并在客户端对结果进行交集
2) 对一个索引执行一个 1 查询,使用一个与另一个表达式一起工作的过滤器表达式(所以基本上,例如:使用过滤器在 lat 上查询 long )。

关于amazon-web-services - Dynamodb 可以使用两个 GSI 进行查询吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37264340/

相关文章:

amazon-web-services - AWS Kinesis Firehose 未在 Redshift 中插入数据

mysql - 我的 MySQL AWS RDS 实例中的这些意外数据库是什么?

javascript - AWS与nodejs失败,错误BucketAlreadyOwnedByYou

linux - 如何读取 AWS ElasticBeanstalk 中设置的环境属性

amazon-web-services - Amazon DynamoDB Local - 未知错误、异常或失败

node.js - 在 ConditionalOperator 设置为 OR 的情况下扫描 DynamoDB 仍执行 AND

amazon-web-services - 在 DynamoDB 表中使用没有排序键的全局二级索引有什么意义?

python - 调用Scan操作: User: arn:aws:sts...无权执行: dynamodb:Scan on resource..时如何解决(AccessDeniedException)?

amazon-web-services - 使用不区分大小写的条件查询 DynamoDB

amazon-web-services - Google脚本和AWS开发工具包