我的mongodb中有3列,名为days (long)
,startDate (java.util.Date)
,endDate (java.util.Date)
。我想要在startDate和(endDate-days)
OR (endDate-startDate)
< = days之间获取记录。
能告诉我如何使用mongoTemplate spring实现这一目标。
我不想从表中获取所有记录,然后在java端解析它,因为将来我的表可能有数百万条记录。
由于 Jitender
答案 0 :(得分:0)
在DB端的查询中无法执行此操作(结束减去开始部分)。如果这是您的应用程序的一个重要功能,我建议您更改架构,以便以您需要的格式在文档中维护两个字段之间的增量。由于您可以在更新endDate时更新该字段(或者如果您同时填充这两个日期,则可以计算该字段)。
如果您从其他来源批量接收此数据,或者您对endDate进行了多次更新,那么您可能需要运行另一个作业并定期计算未计算的文档的增量(然后您就可以开始始终将delta设置为99999,并在设置endDate后将此作业更新为准确值。
虽然你可以使用$ where子句,但这将是一个非常慢的完整集合扫描,所以我不建议使用它 - 即使它需要改变模式,最好还是提出一个更高性能的替代方案。 http://docs.mongodb.org/manual/reference/operator/where/