Java Mongodb:在嵌入式数组中查找最低元素

Java Mongodb:在嵌入式数组中查找最低元素,java,mongodb,sorting,arraylist,Java,Mongodb,Sorting,Arraylist,我收集了一批学生,他们的样子如下: { "_id" : 10, "name" : "Christiano Ronaldo", "scores" : [ { "type" : "exam", "score" : 40.58945534169687 }, { "type" : "quiz

我收集了一批学生,他们的样子如下:

{
    "_id" : 10,
    "name" : "Christiano Ronaldo",
    "scores" : [
            {
                    "type" : "exam",
                    "score" : 40.58945534169687
            },
            {
                    "type" : "quiz",
                    "score" : 4.30461571152303
            },
            {
                    "type" : "homework",
                    "score" : 62.36309025722009
            },
            {
                    "type" : "homework",
                    "score" : 32.1707802903173
            }
    ]
}


我如何找出最低的家庭作业?使用javadriver。

您不需要使用常规查询。您总是查询完整文档,而不是该文档中的嵌入元素。如果您为每个分数制作单独的文档,例如:

{
    "_id" : 10,
    "name" : "Christiano Ronaldo",
    "type" : "exam",
    "score" : 40.58945534169687
}
您可以搜索克里斯蒂亚诺·罗纳尔多的最高/最低考试分数。请注意,MongoDB聚合框架可以用来回答您的问题,但我假设这超出了本文的范围


还要注意,您的模式是非常有问题的。无法使用此模式查询特定的“家庭作业”分数。我将在这里进行非规范化,并在每个分数上使用一个文档。

您不需要正常的查询。您总是查询完整文档,而不是该文档中的嵌入元素。如果您为每个分数制作单独的文档,例如:

{
    "_id" : 10,
    "name" : "Christiano Ronaldo",
    "type" : "exam",
    "score" : 40.58945534169687
}
您可以搜索克里斯蒂亚诺·罗纳尔多的最高/最低考试分数。请注意,MongoDB聚合框架可以用来回答您的问题,但我假设这超出了本文的范围


还要注意,您的模式是非常有问题的。无法使用此模式查询特定的“家庭作业”分数。我会在这里进行非规范化,并使用每个分数的文档。

顺便说一句,很多人都在为这个特定数据模型的问题而挣扎,这不可能是巧合。新的家庭作业?;)大多数新手都在苦苦挣扎。是的,这是一项任务;)顺便说一句,很多人都在为这个特殊的数据模型的问题而挣扎,这不可能是巧合。新的家庭作业?;)大多数新手都在苦苦挣扎。是的,这是一项任务;)为了解决赋值问题,对模式进行非规范化不是一个好主意,因为为了验证我的答案,我必须对我以前的结果运行一个特定的聚合函数。您能在原始问题中添加预期结果应该是什么吗?你说“找最低限度的家庭作业”,那是什么意思?整个集合中作业最少的文档或文档中作业最少的数组元素?是否可以使用$elemMatch获取类型:“作业”?例如,从shell:db.students.find({},{scores:{$elemMatch:{type:'combiness'}}}})来解决作业,对模式进行非规范化不是一个好主意,因为为了验证我的答案,我必须对我以前的结果运行一个特定的聚合函数。你能在原始问题中添加预期结果应该是什么吗?你说“找最低限度的家庭作业”,那是什么意思?整个集合中作业最少的文档或文档中作业最少的数组元素?是否可以使用$elemMatch获取类型:“作业”?例如来自shell:db.students.find({},{scores:{$elemMatch:{type:'combiness'}})