я использую Spring Data для MongoDB и получил следующие классы
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)
);
В результате получается следующий запрос монго:
{
"b": {
"$elemMatch": {
"startDate" : { "$gte" : { "$date" : "2009-11-03T23:00:00.000Z"}},
"endDate" : { "$lte" : { "$date" : "2009-11-03T23:00:00.000Z"}}
}
}
}
но не возвращает результирующих документов. Кто-нибудь знает, что я делаю неправильно? я не понимаю...
Заранее большое спасибо!!
"margins"
делает в этом запросе монго? Это что-то конкретное для драйвера Java? Я не вижу этого нигде в ваших данных. - person JohnnyHK   schedule 07.09.2012$gte
и$lte
поменялись местами. - person JohnnyHK   schedule 07.09.2012