我是casbah和mongodb的新手。我正在尝试编写一个scala代码来查找列的最大值。
例如:
{"_id"=1,value = "a"}
{"_id"=2,value = "b"}
{"_id"=3,value = "c"}
{"_id"=4,value = "d"}
程序应将最大ID数显示为4 你能告诉我怎么做吗?
谢谢!
答案 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
。