我的数据库中的示例记录如下所示:
{
"_id" : 2,
"name" : "Corliss Zuk",
"scores" : [
{
"type" : "exam",
"score" : 87.53859552156015
},
{
"type" : "quiz",
"score" : 24.49132971110967
},
{
"type" : "homework",
"score" : 99.24881912510654
}
]
}
我正在尝试选择所有作业分数 > 90 或考试分数 < 50 的记录。我的 OR 条件是这样的:
DBObject clause1 = new BasicDBObject("scores.type", "homework").append("scores.score", new BasicDBObject("$gt", 90));
DBObject clause2 = new BasicDBObject("scores.type", "exam").append("scores.score", new BasicDBObject("$lt", 50));
BasicDBList or = new BasicDBList();
or.add(clause1);
or.add(clause2);
DBObject query = new BasicDBObject("$or", or);
这是提取所有分数 > 90 或 < 50 的记录,但不涉及正在检查的分数应该是作业分数还是考试分数的条件。我缺少一个将分数与类型相关联然后检查它们的值的条件。
任何帮助将非常感激。
谢谢,约翰