当前位置: 首页 > 知识库问答 >
问题:

使用Spring REST分页在MongoDB中查询ObjectId的日期范围

包承望
2023-03-14

我需要在用户集合中进行日期范围查询。但是它没有日期字段。我找到了一些有用的资源,首先将时间转换为ObjectId,然后在MongoDB shell中查询它:

>var idMin = ObjectId(Math.floor((new Date('2018/1/1'))/1000).toString(16) + "0000000000000000")
>var idMax = ObjectId(Math.floor((new Date('2018/2/1'))/1000).toString(16) + "0000000000000000")
>db.users.find({_id:{$gt: idMin, $lt: idMax}})

我的项目将在前端获取时间范围,将其转换为ObjectId字符串(idMin,idMax),然后向SpringRESTAPI发出请求以获取数据。如何使用带pageable的Spring实现查询?spring mongodb库中有ObjectId类吗?

User.java:

@Document(collection = "users")
    public class User {

    @Id
    private String id;

    private String name;

    private int age;
}

UserRepository.java

@RequestMapping(path = "/users/{idMin}/{idMax}", method = RequestMethod.GET)
public interface UserRepository extends MongoRepository<User, String> {

    Page<User> findAll(Pageable pageable);

    //TODO: query on id range {idMin, idMax}
}

共有1个答案

卫甫
2023-03-14

你可以试试类似的东西

呼叫代码:

ObjectId idMin = new ObjectId(new Date("2018/1/1"));
ObjectId idMax = new ObjectId(new Date("2018/2/1"));
Pageable pages = new PageRequest(1, 2);

Page<User> results = repository.findByObjectIdsAndPages(idMin, idMax, pages);

存储库

 @Query("{_id:{$gt: ?0, $lt: ?1}}")
 Page<User> findByObjectIdsAndPages(ObjectId idMin, ObjectId idMax, Pageable pages);
 类似资料:
  • 问题内容: 我知道ObjectIds包含创建日期。有没有办法查询ObjectId的这一方面? 问题答案: 将时间戳弹出到ObjectId中将详细介绍基于嵌入在ObjectId中的日期的查询。 简要介绍一下JavaScript代码:

  • 问题内容: 嗨,我有一个名为“ my_sales”的集合,其字段为product_name,price,sale_date。 我的文档看起来像 我像这样在mongo shell中尝试过 它给出正确的结果。现在我需要使用我尝试过的golang查询同一件事 它给空结果请帮助 问题答案: 氧化镁支持了time.time为BSON日期。 因此,如果您的结构看起来像这样: 然后,您可以像这样查询它:

  • 问题内容: 我正在尝试在mongodb中执行查询日期,但结果始终为空。我的查询如下: //变量resultaMongo返回空。 Obs:我也尝试不使用.isoformat(),当我直接放入mongodb时,只有添加ISODate才返回结果。因此不会返回结果: 更重要的是,如果您编辑返回: 这是数据库中的记录序列: 如果我打印python的json变量,则会看到类似以下内容的内容: 我的Mongnd

  • 如果日期相同,则使用进行查询将无法正常工作。它更像是。 但如果我给query param加上1秒,它就会工作。 下面是示例查询; 我有一个文档,它是时间戳。 此查询与日期为的文档相匹配,如果我将查询时间戳增加一个,如。 我正在使用mongo控制台,但我在php中遇到了与MongoDate相同的问题 编辑:查询的输出 edit2:问题是mongo的php扩展。它记录了“当文档发送到/从数据库发送时,

  • 问题内容: 我在MySQL中有一张表,该表显示了我每天记录的小时数。我正在尝试建立一个视图,该视图将允许我按块/天范围快速将数据分组。最简单的情况是每月一次,这并不难。我可以将日期选择为“%y-%m”,然后按该列分组。 前任: 如果我按月分组,那很好。但是我的问题是,我需要从每月的13号到下个月的12号进行分组(例如:7月13日至8月12日,8月13日至9月12日,等等)。 有没有一种简单的方法可

  • 因此,正如标题所示,我的MongoDB数据库中有以下示例文档: 如您所见,日期存储为字符串,而不是ISODate对象。据我所知,MongoDB应该仍然能够将其作为日期进行处理和查询。(来源) 因此,我试图用JDBC在我的java应用程序中以以下方式查询它: 然而,这是行不通的。我的思考过程是,如果我通过java。util。日期,然后是过滤器。gte()方法将知道我的意思是查询一个日期,它将按照Mo