0

默认情况下,BETWEEN 查询的端点是包含的。我想使用专有端点查询一系列日期时间。

我目前正在使用 pynamo,所以我的查询是:

Item.my_index.query(
    hash_key=hash_key_id,
    range_key_condition=Item.create_date.between(start_datetime, end_datetime)
)

我不想包含具有create_dateof 的项目end_datetime。在我当前的偏好顺序中,不太理想的选项是create_date == end_datetime在查询之后显式过滤掉项目,create_date从索引中删除并使用过滤条件获得结果,并end_datetime通过在发送到查询之前减去微秒来调整。

有什么方法可以直接支持这一点,或者对首选的解决方法有建议吗?

4

1 回答 1

1

我首选的方法是从end_datetime您发送给查询的时间中减去一微秒。如果您的范围键是数字,这将很有效。如果它是字符串或二进制文件,它就不会工作。

下一个最佳选择是添加 FilterExpression 以删除 create_date == end_datetime 的记录。

从索引中删除 create_date 并不理想,因为这样您的查询将获取具有相同分区/哈希键的所有记录,随着数据的增长,这可能会变得不必要地昂贵。

于 2021-05-17T02:16:52.700 回答