java - 获取mongodb中按年份和月份的所有文档

标签 java mongodb spring-boot spring-data

我想知道 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/

相关文章:

javascript - 如何在查询中获取查询对象?

spring-boot - 如何将 "book"添加到/shelves/1/books

java - Java中没有找到合适的方法来填充int int

java - 在Java中提取大写字符的最快方法

java - Android应用程序在savedInstanceState实现后停止

python - 使用 PyMongo 列出特定数据库的用户

Java Math.IEEERemainder 令人困惑的结果

mongodb - Spring Boot MongoDB 连接问题

java - 如何通过spring数据查找不同字段具有相同值的实体?

java - Dockerfile 中的打包步骤是下载依赖项,尽管前面有一个步骤来解决依赖项