Spring 使用mongotemplate的日期差异(以天数为单位)

Spring 使用mongotemplate的日期差异(以天数为单位),spring,mongodb,Spring,Mongodb,我的mongodb中有3列,分别命名为days(long),startDate(java.util.Date),endDate(java.util.Date)。我只想获取startDate和(endDate days)或(endDate startDate)之间的记录,但在数据库端的查询中(结束减去开始部分)无法实现这一点。如果这是应用程序的一个重要特性,我建议您修改模式,以便在文档中以所需格式维护两个字段之间的增量。因为您可以在更新endDate时更新该字段(或者如果同时填充两个日期,则只需计

我的mongodb中有3列,分别命名为
days(long)
startDate(java.util.Date)
endDate(java.util.Date)
。我只想获取startDate和
(endDate days)
(endDate startDate)
之间的记录,但在数据库端的查询中(结束减去开始部分)无法实现这一点。如果这是应用程序的一个重要特性,我建议您修改模式,以便在文档中以所需格式维护两个字段之间的增量。因为您可以在更新endDate时更新该字段(或者如果同时填充两个日期,则只需计算该字段)

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

虽然您可以使用$where子句,但它将是一个非常缓慢的完整集合扫描,因此我不建议使用它——即使需要更改模式,也最好能找到一个性能更高的替代方案。