当前位置: 首页 > 知识库问答 >
问题:

MongoDB with Java:查找具有最大值的文档

应志用
2023-03-14

我对MongoDB和聚合有最基本的了解。我还没有找到一个明确的例子来说明如何比较多个符合标准的文档并返回1个具有特定属性中最大值的文档。

假设我们收集了以下文档:

{ name: "a" , value: 2 }
{ name: "a" , value: 4 }
{ name: "a" , value: 6 }
{ name: "b" , value: 2 }
{ name: "b" , value: 8 }

如何按名称进行筛选(eq(“name”,“a”)),然后返回具有最高值的文档?

共有1个答案

澹台承
2023-03-14

试试这个

 db.collection.aggregate(
 [
   {
     $group: {
       _id: "$name",
       values: {$addToSet: "$value"}
     }
   },
   {
     $project:{
     _id: 0, name: "$_id", value: {$max: "$values"}
     }
   }
])
 类似资料:
  • 问题内容: 我有下表: 如何在每个“班级”中找到最大“分数”的“名称”? 要求的输出: 这是针对MySQL的。 问题答案:

  • 我有一个对象流,我想找到一个最大值的一些属性,计算起来很昂贵。 作为一个特定的简单示例,假设我们有一个字符串列表,我们希望找到最酷的一个,给定函数。

  • 问题内容: 我有一个对象流,我想找到一个具有某些属性最大值的对象,该属性的计算成本很高。 作为一个简单的具体示例,假设我们有一个字符串列表,并且希望找到给定功能的最酷的字符串。 以下应该工作: 现在,这有两个问题。首先,假设计算起来很昂贵,这可能不是很有效。我想该方法将需要重复使用比较器,该比较器将依次重复调用,最后每个字符串将被多次调用。 其次,必须提供比较器会导致代码有些冗余。我更喜欢这样的语

  • 问题内容: 我有一个具有唯一的数字运行ID的文档集合,我想找到运行ID最高的文档。 我可以做两个查询。 首先,我可以找到最高的运行ID: 其次,我可以找到具有该运行ID的文档: 有没有办法我可以通过一个查询做到这一点? 问题答案: 您可以通过组合“ sort”和“ size”来实现: 这将返回最高的记录

  • 问题内容: 我想找到列的2nd,3rd,… nth个最大值。 问题答案: 您可以将列排序为降序格式,然后仅从第n行获取值。 编辑:: 根据评论请求进行了更新。 警告 完全未经测试! 类似于上面的内容对于Oracle应该适用…您可能必须首先正确使用语法!

  • 给定包含以下文档的集合: 我需要返回ip值为X的所有文档,但前提是X的关联时间戳是ips数组中的最高时间戳(因此,上面的示例文档不应与搜索“222222222”匹配,因为这不是具有最新时间戳的ip)。 这是我第一次在MongoDB中做任何超出相当基本的东西,所以我能得到的最接近的是: 科尔。聚合({$匹配:{“ips.ip”:X}}},{$组:{“\u id”:“$主机”,“max”:{$max: