Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb Scala根据最大值筛选列表_Mongodb_Scala - Fatal编程技术网

Mongodb Scala根据最大值筛选列表

Mongodb Scala根据最大值筛选列表,mongodb,scala,Mongodb,Scala,我有以下地图: [ { "animal": "dog", "age": 1}, { "animal": "dog", "age": 2}, { "animal": "dog", "age": 3}, { "animal": "cat", "age": 1}, { "animal": "cat", "age": 4}, { "animal": "rabbit", "age": 9} ] 我如何返回一个结果,以便得到最大年龄的狗、猫和兔子。例如: [ { "anim

我有以下地图:

[
  { "animal": "dog", "age": 1},
  { "animal": "dog", "age": 2},
  { "animal": "dog", "age": 3},
  { "animal": "cat", "age": 1},
  { "animal": "cat", "age": 4},
  { "animal": "rabbit", "age": 9}
]
我如何返回一个结果,以便得到最大年龄的狗、猫和兔子。例如:

[
    { "animal": "dog", "age": 3},    # oldest dog in DB
    { "animal": "cat", "age": 4},    # oldest cat in DB
    { "animal": "rabbit", "age": 9}  # oldest rabbit in DB

]

我正在尝试使用两个scala.map()聚合来实现这一点,但到目前为止没有成功。

假设一个case类,如
case class Pet(animal:String,age:Int)

对于
列表[BSONDocument]
,相同的概念:

list.groupBy(_.getAs[String]("animal")).values.map(_.maxBy(_.getAs[Int]("age"))).toList

列表的类型是什么<代码>列表[JsValue]<代码>列表[SomeCustomType]?@AlvaroCarrasco它的
未来[List[BSONDocument]]
这是Mongodby的一个结果。你可以编写一个mongodb查询,只返回最古老的动物:@soote:是的,我先尝试了,但它返回了一个复杂的JSON,而且更不明显的是,除了动物名称和年龄之外,它还可以显示所有其他字段
列表.groupBy(u.animal).mapValues(u.maxBy(.age))…
?@AlvaroCarrasco:这可以在不使用case类的情况下完成吗?
list.groupBy(_.getAs[String]("animal")).values.map(_.maxBy(_.getAs[Int]("age"))).toList