有人可以帮助我在morphia中编写以下查询。感谢
db.restaurants.find({grades : { $elemMatch:{"score":{$gt : 80 , $lt :100}}}});
根据我对morphia的研究,我使用了以下内容。但这不正确
List<Restaurant_M> r = ds.find(Restaurant_M.class)
.field("grades.score").lessThan(100)
.field("grades.score").greaterThan(80)
.asList();
答案 0 :(得分:0)
您可以使用Morphia的filter(...)方法和'elem'运算符来获得所需的行为。见https://github.com/mongodb/morphia/wiki/Query
答案 1 :(得分:0)
将我的头撞在吗啡的墙壁上一周之后我假设在morphia中没有办法做到这一点几乎我在morphia中编写的所有代码都提供了类型的查询
query: { $and: [ { grades: { $elemMatch: { score: { $gt: 80 } } } }, { grades: { $elemMatch: { score: { $lt: 100 } } } } ] }
这只能确保成绩数组中的每个单独得分都超过80或低于100.因此,如果某个成绩为131的成绩,则仍会返回。我的目标是只得到那些级别子文档中所有分数都在80到100之间的文档。问题中发布的查询实现了这个,但我无法将其翻译成morphia
借助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();
仍然,如果有人在morphia中找到了这样做的方法,我会很感激
答案 2 :(得分:0)
我刚刚添加了一个解决此问题的新elemMatch()
。您可以尝试Morphia的快照构建或等待1.3版本。