我正在使用Spring Data for MongoDB,有以下类:
```java ```
当我保存一个A对象时,它会被持久化,如下所示:
现在我想查询数据库,找到与b中条目相匹配的文档,其中给定日期位于startDate和endDate之间。
这将导致以下Mongo查询:
但没有返回任何结果文档。有人知道我做错了什么吗?我不明白...非常感谢您的帮助!
```java ```
class A {
List<B> b;
}
class B {
Date startDate;
Date endDate;
}
当我保存一个A对象时,它会被持久化,如下所示:
{
"_id" : "DQDVDE000VFP8E39",
"b" : [
{
"startDate" : ISODate("2009-10-05T22:00:00Z"),
"endDate" : ISODate("2009-10-29T23:00:00Z")
},
{
"startDate" : ISODate("2009-11-01T23:00:00Z"),
"endDate" : ISODate("2009-12-30T23:00:00Z")
}
]
}
现在我想查询数据库,找到与b中条目相匹配的文档,其中给定日期位于startDate和endDate之间。
Query query = new Query(Criteria.where("b").elemMatch(
Criteria.where("startDate").gte(date)
.and("endDate").lte(date)
);
这将导致以下Mongo查询:
{
"b": {
"$elemMatch": {
"startDate" : { "$gte" : { "$date" : "2009-11-03T23:00:00.000Z"}},
"endDate" : { "$lte" : { "$date" : "2009-11-03T23:00:00.000Z"}}
}
}
}
但没有返回任何结果文档。有人知道我做错了什么吗?我不明白...非常感谢您的帮助!
$gte
和$lte
条件是否应该交换。 - JohnnyHK