Spring 数据 MongoDB - 自定义查询
Spring Data MongoDB - custom query
我想像下面这样存储跟踪信息:
{
"timestamp": 1394343677415,
"info": {
"method": "GET",
"path": "/trace",
"headers": {
"request": {
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Connection": "keep-alive",
"Accept-Encoding": "gzip, deflate",
"User-Agent": "Mozilla/5.0 Gecko/Firefox",
"Accept-Language": "en-US,en;q=0.5",
"Cookie": "_ga=GA1.1.827067509.1390890128; ..."
"Authorization": "Basic ...",
"Host": "localhost:8080"
},
"response": {
"Strict-Transport-Security": "max-age=31536000 ; includeSubDomains",
"X-Application-Context": "application:8080",
"Content-Type": "application/json;charset=UTF-8",
"status": "200"
}
}
}
我的 @Document
实体正在扩展 HashMap。
现在我必须为分页编写自定义查询。
在Mongo客户端shell我会这样写:
db.traceInfo.find({"headers.response.status": "404"}).limit(n);
并且有效,但我不知道如何将此查询写为 @Query
in Spring MongoRepository?我该怎么做?
这很简单,但是 spring-data-mongodb 不支持关键字 limit
,请查看此处的参考资料:https://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#repository-query-keywords
可能的解决方案:
@Query({"headers.response.status": "?1"})
List<T> findByGivenStatus(int status);
我想像下面这样存储跟踪信息:
{
"timestamp": 1394343677415,
"info": {
"method": "GET",
"path": "/trace",
"headers": {
"request": {
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Connection": "keep-alive",
"Accept-Encoding": "gzip, deflate",
"User-Agent": "Mozilla/5.0 Gecko/Firefox",
"Accept-Language": "en-US,en;q=0.5",
"Cookie": "_ga=GA1.1.827067509.1390890128; ..."
"Authorization": "Basic ...",
"Host": "localhost:8080"
},
"response": {
"Strict-Transport-Security": "max-age=31536000 ; includeSubDomains",
"X-Application-Context": "application:8080",
"Content-Type": "application/json;charset=UTF-8",
"status": "200"
}
}
}
我的 @Document
实体正在扩展 HashMap。
现在我必须为分页编写自定义查询。
在Mongo客户端shell我会这样写:
db.traceInfo.find({"headers.response.status": "404"}).limit(n);
并且有效,但我不知道如何将此查询写为 @Query
in Spring MongoRepository?我该怎么做?
这很简单,但是 spring-data-mongodb 不支持关键字 limit
,请查看此处的参考资料:https://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#repository-query-keywords
可能的解决方案:
@Query({"headers.response.status": "?1"})
List<T> findByGivenStatus(int status);