我想知道 mongodb 中是否存在一种无需使用聚合操作即可获得此功能的方法,因为我知道该函数有更多用途,但我不确定这是否正确(我错了吗?)。我一直在搜索更简单的东西,比如 SQL:
SELECT * FROM Customer WHERE YEAR(createdDate) = 2018 AND MONTH(createdDate) = 1
我正在使用 spring boot 和 spring data mongodb:
@Repository
public interface CustomerRepository extends MongoRepository<Customer, String>{
@Query("{query}")
List<Customer> findByCustomQuery();
}
感谢他们的回答。
最佳答案
您可以使用$expr ( 3.6 mongo 版本运算符)在常规查询中使用聚合函数进行日期单位比较。
@Query("{$expr:{$and:[{$eq:[{$year:'$createdDate'}, ?0]}, {$eq:[{$month:'$createdDate'}, ?1]}]}")
List<Customer> findByCustomQuery(into year, int month);
关于java - 获取mongodb中按年份和月份的所有文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48836151/