
[英]What does DynamoDBMapper's query method return when value doesn't exist?
[英]Does DynamoDBMapper's query() method only work for primary keys that are composite?
在 DynamoDBMapper 的 query() 方法的文档中,它说如下:
查询表或二级索引。 只有具有复合主键(分区键和排序键)的表或索引才能查询。
如果表的主键只有一个分区键会怎样? 读取是否最终变得一致? 会出错吗?
该文档错误地说明了这一点,我已提交反馈以对其进行更新。 您可以将 Query 用于只有 PK 而没有任何含义的表,它应该完全按照您的预期工作。
你能更新你问题中的最后一句话吗? 我不是很关注。
我有很多不需要排序键的表,因此可以省略。 所有表必须至少有 1 个分区键(主键)。 这是您可以查询的唯一索引。 如果您需要多个索引,您可以添加一个全局二级索引 (GSI),然后您可以对其进行查询。
所以如果你的桌子看起来像这样
[PK, SK, name, date, ...]
我现在可以查询PK
(分区键)并按SK
(排序键)过滤。 我无法按name
、 date
或表格中的其他内容进行查询。
但是,如果您的表是这样的结构
[PK, SK, name(GSI), date, ...]
我现在也可以通过全局二级索引name
进行查询。 https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Query.html
所以我认为答案是否定的。 您的分区键必须是唯一的。 如果您尝试再次添加相同的项目,它将失败,除非您使用 update 方法,如果现有项目存在则更新该项目,如果不存在则创建一个新项目。
编辑:虽然我的回答并非完全错误,但数据库中项目的实际密钥是基于 PK 和 SK 的组合。 因此,您可以拥有多个主键为Iowa
且辅助键为123
456
或789
的项目,并且在您的查询中,您必须同时包含 PK 和 SK 以获得您正在寻找的确切项目。
[
IOWA (PK), 123 (SK),...,
IOWA (PK), 456 (SK),...,
]
https://aws.amazon.com/blogs/database/choosing-the-right-dynamodb-partition-key/
问题未解决?试试以下方法:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.