使用casbah在mongoDB中查找属性的最大值

时间:2014-10-14 08:21:56

标签: mongodb scala casbah

我是casbah和mongodb的新手。我正在尝试编写一个scala代码来查找列的最大值。

例如:

  {"_id"=1,value = "a"}
  {"_id"=2,value = "b"}
  {"_id"=3,value = "c"}
  {"_id"=4,value = "d"}

程序应将最大ID数显示为4 你能告诉我怎么做吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

这是非常基本的东西,所以我真的建议查看MongoDB tutorials以获得基本的基础。或者,MongoDB中有一个免费的online education platform

关于手头的问题 - 你如何找到最大值_id?找到最大值的方法是简单地按降序对数据进行排序并获取第一个项目。当_id被自动编入索引时,这将是一个廉价的操作。有一个findOne method接受查询,要返回的字段和排序文档,使用它我们可以获得具有最高_id的文档:

  // Add some test data:
  collection += MongoDBObject("_id" -> 1, "value" -> "a")
  collection += MongoDBObject("_id" -> 2, "value" -> "b")
  collection += MongoDBObject("_id" -> 3, "value" -> "c")
  collection += MongoDBObject("_id" -> 4, "value" -> "d")

  // findOne
  val query = MongoDBObject() // All documents
  val fields = MongoDBObject("_id" -> 1) // Only return `_id`
  val orderBy = MongoDBObject("_id" -> -1) // Order by _id descending

  // Run the query
  collection.findOne(query, fields, orderBy)

在findOne中我们只返回_id字段,这意味着我们只能利用索引来查找这些数据,因为我们不需要文档中的任何其他数据。

FindOne返回Option[MongoDocument],包含的文档将包含最高_id