【问题标题】:Get all documents by year and month in mongodb在mongodb中按年和月获取所有文档
【发布时间】:2018-07-27 21:59:38
【问题描述】:

我想知道在 mongodb 中是否存在一种无需使用聚合操作即可获得此功能的方法,因为我知道此功能有更多用途,但我不确定这是否正确(我错了吗?)。我一直在搜索更简单的东西,例如 SQL:

SELECT * FROM Customer WHERE YEAR(createdDate) = 2018 AND MONTH(createdDate) = 1

我正在使用带有spring data mongodb的spring boot:

@Repository
public interface CustomerRepository extends MongoRepository<Customer, String>{

     @Query("{query}")
     List<Customer> findByCustomQuery();

}

感谢他们的回答。

【问题讨论】:

  • 你的 mongo 版本是什么?只能在 3.6 中为您的用例使用查找查询。
  • 是的,我的版本是 3.6。

标签: java mongodb spring-boot spring-data


【解决方案1】:

您可以使用$expr(3.6 mongo 版本运算符)在常规查询中使用聚合函数进行日期单位比较。

@Query("{$expr:{$and:[{$eq:[{$year:'$createdDate'}, ?0]}, {$eq:[{$month:'$createdDate'}, ?1]}]}")
List<Customer> findByCustomQuery(into year, int month);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-31
    • 2021-02-22
    • 2015-10-22
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 2017-09-14
    相关资源
    最近更新 更多