Я хочу сделать это в морфию. Может кто-нибудь помочьМорфийский эквивалент этого кода java-драйвера
Bson f1 = Filters.gt("score", 80);
Bson f2 = Filters.lt("score", 100);
Bson f3 = and (f1, f2);
MongoCursor<Document> c = collection.find(
elemMatch("grades", f3))
.iterator();
пожалуйста к сведению, что следующее не работает
ds.find(Restaurant_M.class)
.field("grades.score")
.greaterThan(80)
.lessThan(100)
.asList();
моя цель состоит в том, чтобы получить все документы, где счет в классы поддокументу только от 80 до 100 он должен $ и $ gt: 80 и $ lt: 100. В заявлении morphia, который я опубликовал, проверяется только каждый индивидуальный счет для обоих условий. он не проверяет все баллы в $ и. поэтому я получаю документы, где оценка равна, например. 130 (потому что это> 80).
жаль, что до сих пор не работает. он также возвращает ресторан с оценкой = 131. Примечание: рестораны имеют более одного сорта. – Newton
Да, вы правы. Я посмотрел на исходный код морфий и не нашел ответа на вопрос. Кажется, текущая версия не поддерживает несколько критериев для массива документов. Также я зарегистрировал [выпуск] (https://github.com/mongodb/morphia/issues/970) в morphia github. – EugeneL
так и думал. Благодарю. Я сделал это, используя hasAnyOf() – Newton