DynamoDB 查询日期字段在过滤器中返回非日期行
DynamoDB Query Date Field returning non date rows in Filter
我的 DynamoDB table 设置有一个 Hash Key (PK) 和一个 SortKey (SK1)。我目前存储用户 ID 和与用户信息相关的各种排序键。例如,
PK
SK1
User#1
DeviceToken#1234
User#1
CourseEnrolledDate#2022-01-20
User#1
CourseEnrolledDate#2022-01-19
我现在需要知道用户在 2022-01-19 之后注册了哪些课程,因此我使用 PK=User#1 和 KeyCondition= SK1 > CourseEnrolledDate#2022-01-19 发出查询。
结果正确过滤了 CourseEnrolled,除了它还包含 DeviceToken#1234 项目,这不应该是这种情况,因为 DeviceToken 项目没有要从中过滤的日期字段。我做错了什么?您如何建议我对用例建模?
而不是 >
运算符,将 BETWEEN
运算符应用于查询的 key condition expression:
中的 SK1
AND SK1 BETWEEN CourseEnrolledDate#2022-01-20 AND CourseEnrolledDate#9
其中 a BETWEEN b AND c
returns 如果 a
大于或等于 b
且小于或等于 c
.[=19,则为真=]
我的 DynamoDB table 设置有一个 Hash Key (PK) 和一个 SortKey (SK1)。我目前存储用户 ID 和与用户信息相关的各种排序键。例如,
PK | SK1 |
---|---|
User#1 | DeviceToken#1234 |
User#1 | CourseEnrolledDate#2022-01-20 |
User#1 | CourseEnrolledDate#2022-01-19 |
我现在需要知道用户在 2022-01-19 之后注册了哪些课程,因此我使用 PK=User#1 和 KeyCondition= SK1 > CourseEnrolledDate#2022-01-19 发出查询。
结果正确过滤了 CourseEnrolled,除了它还包含 DeviceToken#1234 项目,这不应该是这种情况,因为 DeviceToken 项目没有要从中过滤的日期字段。我做错了什么?您如何建议我对用例建模?
而不是 >
运算符,将 BETWEEN
运算符应用于查询的 key condition expression:
SK1
AND SK1 BETWEEN CourseEnrolledDate#2022-01-20 AND CourseEnrolledDate#9
其中 a BETWEEN b AND c
returns 如果 a
大于或等于 b
且小于或等于 c
.[=19,则为真=]