0

我的 mongodb 中有 3 列,名为days (long), startDate (java.util.Date), endDate (java.util.Date)。我想要获取 startDate 和(endDate-days)OR (endDate-startDate)<= 天之间的记录。你能告诉我如何使用 mongoTemplate spring 来实现这一点。

我不想从表中获取所有记录,然后在 java 端解决这个问题,因为将来我的表可能有数百万条记录。

感谢 jitender

4

1 回答 1

0

在数据库端的查询中没有办法做到这一点(结束减去开始部分)。如果这是您的应用程序的一个重要功能,我建议您更改架构以在文档中以您需要的格式维护两个字段之间的增量。由于您可以在更新 endDate 时更新该字段(或者如果您同时填充两个日期,则可以只计算该字段)。

如果您从另一个来源批量接收此数据,或者如果您对 endDate 进行多次更新,那么您可能需要运行另一个作业并定期计算未计算的文档的增量(然后您可以从始终设置开始delta 到 99999 并在设置 endDate 后在此作业中将其更新为准确值)。

虽然您可以使用 $where 子句,但这将是一个非常缓慢的完整集合扫描,因此我不建议使用它 - 即使它需要更改架构,最好还是想出一个性能更高的替代方案。 http://docs.mongodb.org/manual/reference/operator/where/

于 2013-03-01T11:39:35.797 回答