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

MongoRepository JSON日期查询(Spring)

东门翰
2023-03-14

我正在尝试使用对mongo存储库进行自己的查询:

@Repository
public interface LogEntryRepository extends MongoRepository<LogEntry,String> {

    @Query("{'created_at' : {{ $gte: ISODate(?0)},{$lt: ISODate(?1)}}, " +
        "$or: [{'site': {$regex: ?2}}, {'login': {$regex: ?2}}, {'ip': {$regex: ?2}} ]" +
        "}")
    public Page<LogEntry> findByDateTimeBetweenAndCriteria(String isoStartDate, String isoEndDate, String searchTerm, Pageable page);

}

我想实现的是使用关键字搜索日期日志。上面抱怨了一个解析错误:

        Caused by: com.mongodb.util.JSONParseException: 
    {'created_at' : { $gte: ISODate("_param_0"), $lt: ISODate("_param_1")}, $or: [{'site': {$regex: "_param_2"}}, {'login': {$regex: "_param_2"}}, {'ip': {$regex: "_param_2"}} ]}
                            ^

如果我将ISODate(?0)替换为简单的?0它生成包含未知实例的第1页,共0页

字符串isoStartDate

我怎么才能把我的约会对象弄进去?

共有1个答案

司徒焕
2023-03-14

ISODate是一个Mongo shell构造,用于创建BSON日期,但绝对不是有效的JSON,我相信这就是您的错误所在。

按照此答案中的建议,尝试将上述ISODate调用替换为{'$date':'?0'}{'$date':'?1'}。所有字符串可能都需要用单引号括起来。

 类似资料:
  • 本实例使用有关日期处理和日期格式化的类实现一个日期查询的功能,即查询指定日期所在周的周一日期、两个指定日期间相差的天数和指定日期为所在周的星期几的日期 3 个功能。 从功能上来看,本实例至少需要定义 3 个方法,分别完成:获取指定日期所在周的周一日期、获取两个指定日期的相差天数以及获取指定日期为所在周的星期几的日期这 3 个功能,同时需要定义 Date 类型的日期与 String 类型之间的转换方

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

  • 我有一个使用Sqlite数据库的树莓Pi温度记录器,它与我的嵌入式C Civetweb应用程序配合得很好。 我想我会有一些乐趣,尝试把一些东西与Spring靴连接起来。我可以进行一些查询,但几乎没有任何查询日期的方法。 我使用org.xerialsqlite jdbc3.36.0.3和com.enigmabridgehibernate4-sqlite方言0.1.2设置sqlite数据源。 在我的P

  • 问题内容: 我在集合中将值存储为java.util.Date(),但是当我查询以获取两个特定日期之间的值时,最终得到的值超出了范围。这是我的代码: 插入 查询 当我在和之间查询时(基本上是fromDate = toDate),我得到的日期绝对不可能的对象。我在这里想念什么? 问题答案: 您正在执行的操作是仅在键覆盖中使用丢失运算符进行查询。您想要的是:

  • 因此,我想运行一个查询来检索过去15天的所有与dateofActivity有关的信息。所以我使用了以下查询: 然后我注意到返回的记录并不局限于过去15天的所有活动。然后我尝试运行查询: 这并不限制查询记录。返回的记录包含了2020年12/27/的一些数据。我在查询中哪里做错了? 另外,基于这个dateofActivity字段检索过去一个月的结果的最佳方法是什么?例如,如果我想在每月的第一天运行此报

  • 问题内容: 我试图找出如何用Mongoose做特定的查询。我在mongodb中有这样的东西: 我想获取实际日期和modificationDate之间的差异大于5天的所有对象。 问题答案: 计算5天的截止时间,然后使用运算符和计算出的截止值执行: