MongoRepository JSON日期查询(Spring)

时间:2017-07-26 22:32:03

标签: mongodb spring-data spring-data-mongodb

我正在尝试使用my my own query for mongo Repository:

cat_id

我想要实现的是使用关键字搜索过时的日志。以上抱怨解析错误:

$query = $mysqli->query("SELECT * FROM favourites WHERE user_id='$userid'");
if($query->num_rows != 0){
while ($rows = $query->fetch_assoc())
{
  $partnerid = $rows['part_id'];
$query = $mysqli->query("SELECT DISTINCT cat_id FROM partner WHERE
partner_id=$partnerid");
while ($rows = $query->fetch_assoc())
{
        $cat_id = $rows['cat_id'];
}}}

如果我仅使用@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)

The Strings ?0&amp; Page 1 of 0 containing UNKNOWN instancesisoStartDate制作,看起来像isoEndDate

如何在那里取得约会?

1 个答案:

答案 0 :(得分:3)

ISODate是一个Mongo shell构造,用于创建BSON日期,绝对不是有效的JSON,我相信你的错误是抱怨的。

尝试按照此answer中的建议,使用@Configuration class CustomRequestMappingHandlerMapping { @Bean public WebMvcRegistrationsAdapter webMvcRegistrationsHandlerMapping() { return new WebMvcRegistrationsAdapter() { @Override public RequestMappingHandlerMapping getRequestMappingHandlerMapping() { return new ApiVersionRequestMappingHandlerMapping("v"); } }; } } { '$date' : '?0' }替换上述ISODate调用。所有字符串可能都需要用单引号括起来。