gpt4 book ai didi

java - 如何删除MongoDB中小时数不是12倍数的记录

转载 作者:行者123 更新时间:2023-12-01 13:50:31 25 4
gpt4 key购买 nike

我通过 Casbah 驱动程序使用 MongoDB,并且存储包含日期字段的文档,该字段在我的 java 世界中是 Java DateTime。我需要执行类似的查询:

  • 删除除小时之外的任意日期属于特定间隔的所有记录
  • 删除日期为任意日期但小时不为 3 倍数的所有记录。
  • 查找任意一天、11 小时的所有记录

考虑到 Joda DateTime 的转换助手存储单个字段,是否有一种简单的方法可以做到这一点?我应该重构它以具有时间字段和日期字段吗?

最佳答案

日期时间上的范围运算符仅适用于从年-月-日-小时等向下的单个不同范围,因此不适用于您有效要求许多不同范围的查询。

MongoDB 也没有只代表没有日期的时间的类型,因此可能的替代方案是:

有点 hacky:将另一个日期字段的年/月/日“剪辑”为相同的值,并从现有字段中获取小时/分钟/秒(因此所有日期都折叠为单日),那么单个范围可以匹配当天的小时数。

替代方案:用字符串表示的时间索引另一个字段,并构造与各种条件匹配的正则表达式(例如,凌晨 2 点到凌晨 4 点之间(含):/^{02,03,04}/) .

对于任何一种解决方案,您都可以为字段建立索引,并且我相信查询应该有效地利用索引。第二个解决方案似乎稍微更明智。

关于java - 如何删除MongoDB中小时数不是12倍数的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19997204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com