我正在尝试使用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 instances
由isoStartDate
制作,看起来像isoEndDate
如何在那里取得约会?
答案 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调用。所有字符串可能都需要用单引号括起来。