【发布时间】:2020-04-05 00:19:06
【问题描述】:
我正在尝试获取所有符合以下条件的文档,但结果似乎不正确。
标准:发行日期与给定范围匹配且此发行时间表有效的电影
isActive=true 和 releaseDate >= 2020-04-20 和 releaseDate
每个文档都是Movie 类型,其中包含一个movieTimeline 对象列表,每个movieTimeline 都有一个isActive 和releaseDate 属性。 在任何时候,单个电影时间线都可以在文档中处于活动状态。
文档的结构 -
@Document
public class Movie extends BaseDocument
{
private String name;
private List<MovieTimeline> movieTimelines;
...
public class MovieTimeline
{
private Boolean isActive;
private LocalDateTime releaseDate;
private String description;
...
发布日期属性在 Java 中属于 LocalDateTime 类型,以 2020-04-20T05:00:00.000+00:00 格式存储在 DB 中。
这是我尝试检索数据的代码-
@Repository
public interface MovieRepository extends MongoRepository<Movie,String>
{
List<Movie> findByMovieTimelines_ReleaseDateBetweenAndMovieTimelines_IsActive(LocalDateTime from, LocalDateTime to, boolean isActive);
}
样本数据 -
{
"id": "abc",
"name": "Rango",
"movieTimelines": [{
"isActive": false,
"releaseDate": "2020-02-10T11:30:00",
"description": "ORIGINAL TIMELINE"
}, {
"isActive": true,
"releaseDate": "2020-06-15T10:30:00",
"description": "New Timeline created on 03/10/2020"
}
]
}, {
"id": "abcv",
"name": "Fight Club",
"movieTimelines": [{
"isActive": false,
"releaseDate": "2020-02-10T11:30:00",
"description": "ORIGINAL TIMELINE"
}, {
"isActive": true,
"releaseDate": "2020-05-18T10:30:00",
"description": "New Timeline created on 02/05/2020"
}
]
}, {
"id": "asd",
"name": "Death Note",
"movieTimelines": [{
"isActive": false,
"releaseDate": "2020-03-09T10:30:00",
"description": "ORIGINAL TIMELINE"
}, {
"isActive": false,
"releaseDate": "2020-03-16T10:30:00",
"description": "New Timeline created on 02/05/2020"
}, {
"isActive": false,
"releaseDate": "2020-04-20T10:30:00",
"description": "New Timeline created on 03/06/2020"
}, {
"isActive": true,
"releaseDate": "2020-04-20T10:30:00",
"description": "New Timeline created on 03/06/2020"
}
]
}, {
"id": "gfj",
"name": "Andhadhun",
"movieTimelines": [{
"isActive": false,
"releaseDate": "2020-04-13T10:30:00",
"description": "ORIGINAL TIMELINE"
}, {
"isActive": true,
"releaseDate": "2020-07-20T10:30:00",
"description": "New Timeline created on 03/09/2020"
}
]
}, {
"id": "nojh",
"name": "Evan Almighty",
"movieTimelines": [{
"isActive": true,
"releaseDate": "2020-04-20T10:30:00",
"description": "ORIGINAL TIMELINE"
}
]
}
预期-
{
"id": "asd",
"name": "Death Note",
"movieTimelines": [{
"isActive": false,
"releaseDate": "2020-03-09T10:30:00",
"description": "ORIGINAL TIMELINE"
}, {
"isActive": false,
"releaseDate": "2020-03-16T10:30:00",
"description": "New Timeline created on 02/05/2020"
}, {
"isActive": false,
"releaseDate": "2020-04-20T10:30:00",
"description": "New Timeline created on 03/06/2020"
}, {
"isActive": true,
"releaseDate": "2020-04-20T10:30:00",
"description": "New Timeline created on 03/06/2020"
}
]
},{
"id": "nojh",
"name": "Evan Almighty",
"movieTimelines": [{
"isActive": true,
"releaseDate": "2020-04-20T10:30:00",
"description": "ORIGINAL TIMELINE"
}
]
}
MongoDB 是否有任何过滤器或运算符可用于在单个查询中获取这些文档?
【问题讨论】:
标签: mongodb mongodb-query spring-data-mongodb