Morphia相当于这个java-driver代码

时间:2016-06-26 05:24:58

标签: mongodb-java morphia

我想在吗啡中这样做。任何人都可以帮忙

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)。

1 个答案:

答案 0 :(得分:0)

您可能希望使用AND运算符来处理此问题:

Query<Restaurant_M> query = getDs().find(Restaurant_M.class);
query.and(query.criteria("grades.score").greaterThan(80),   query.criteria("grades.score").lessThan(100));
List<Restaurant_M> orders = query.asList();

使用morphia版本1.2.0