如何在吗啡中编写以下查询
How to write the following query in morphia
谁能帮我用吗啡写下下面的查询。谢谢
db.restaurants.find({grades : { $elemMatch:{"score":{$gt : 80 , $lt :100}}}});
根据我对吗啡的研究,我使用了以下方法。但这是不正确的
List<Restaurant_M> r = ds.find(Restaurant_M.class)
.field("grades.score").lessThan(100)
.field("grades.score").greaterThan(80)
.asList();
您可以将 Morphia 的 filter(...) 方法与 'elem' 运算符结合使用来获得您需要的行为。参见 https://github.com/mongodb/morphia/wiki/Query
在我的头撞到吗啡的墙上一周之后,我假设在吗啡中没有办法做到这一点,几乎我在吗啡中编写的每一个代码都给出了一个类型的查询
query: { $and: [ { grades: { $elemMatch: { score: { $gt: 80 } } } }, { grades: { $elemMatch: { score: { $lt: 100 } } } } ] }
这只能确保成绩数组中的每个单独分数都大于 80 或小于 100。因此,如果文档的分数为 131,它仍将被返回。我的 objective 是只获取 grades 子文档中所有分数都在 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();
不过,如果有人能找到在吗啡中做到这一点的方法,我将不胜感激
我刚刚添加了一个新的 elemMatch()
来解决这个问题。您可以尝试 Morphia 的快照构建或等待 1.3 版本。
谁能帮我用吗啡写下下面的查询。谢谢
db.restaurants.find({grades : { $elemMatch:{"score":{$gt : 80 , $lt :100}}}});
根据我对吗啡的研究,我使用了以下方法。但这是不正确的
List<Restaurant_M> r = ds.find(Restaurant_M.class)
.field("grades.score").lessThan(100)
.field("grades.score").greaterThan(80)
.asList();
您可以将 Morphia 的 filter(...) 方法与 'elem' 运算符结合使用来获得您需要的行为。参见 https://github.com/mongodb/morphia/wiki/Query
在我的头撞到吗啡的墙上一周之后,我假设在吗啡中没有办法做到这一点,几乎我在吗啡中编写的每一个代码都给出了一个类型的查询
query: { $and: [ { grades: { $elemMatch: { score: { $gt: 80 } } } }, { grades: { $elemMatch: { score: { $lt: 100 } } } } ] }
这只能确保成绩数组中的每个单独分数都大于 80 或小于 100。因此,如果文档的分数为 131,它仍将被返回。我的 objective 是只获取 grades 子文档中所有分数都在 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();
不过,如果有人能找到在吗啡中做到这一点的方法,我将不胜感激
我刚刚添加了一个新的 elemMatch()
来解决这个问题。您可以尝试 Morphia 的快照构建或等待 1.3 版本。