Я использую следующий код для фильтрации ресторанов с сортом более 80, но менее 100Morphia фильтрации неправильно
List<Restaurant_M> r = ds.find(Restaurant_M.class)
.field("grades.score").lessThan(100)
.field("grades.score").greaterThan(80)
.asList();
Это работает, но я получаю 1 дополнительный документ, который показан ниже
{
"_id" : ObjectId("572eb5df1d739cc73c21fab1"),
"address" : {
"building" : "65",
"coord" : [
-73.9782725,
40.7624022
],
"street" : "West 54 Street",
"zipcode" : "10019"
},
"borough" : "Manhattan",
"cuisine" : "American ",
"grades" : [
{
"date" : ISODate("2014-08-22T00:00:00Z"),
"grade" : "A",
"score" : 11
},
{
"date" : ISODate("2014-03-28T00:00:00Z"),
"grade" : "C",
"score" : 131
},
{
"date" : ISODate("2013-09-25T00:00:00Z"),
"grade" : "A",
"score" : 11
},
{
"date" : ISODate("2013-04-08T00:00:00Z"),
"grade" : "B",
"score" : 25
},
{
"date" : ISODate("2012-10-15T00:00:00Z"),
"grade" : "A",
"score" : 11
},
{
"date" : ISODate("2011-10-19T00:00:00Z"),
"grade" : "A",
"score" : 13
}
],
"name" : "Murals On 54/Randolphs'S",
"restaurant_id" : "40372466"
}
У этого нет оценки в диапазоне 80-100. это бьет меня. может кто-нибудь сказать, почему этот документ возвращается?
EDIT: Итак, я попытался сделать это с помощью драйвера JAVA, и я неожиданно получаю точно такие же результаты. код выглядит следующим образом
FindIterable<Document> r = collection.find(
Filters.and(Filters.gt("grades.score", 80), Filters.lt("grades.score", 100))
);