Это довольно простой материал, поэтому я рекомендую посмотреть MongoDB tutorials, чтобы получить базовое заземление. Кроме того, есть бесплатный online education platform от MongoDB!
Что касается вопроса - как найти максимум _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
.
Первое спасибо за отклик. Я попробовал аналогичный код, который вы упомянули. Но я получаю сообщение об ошибке «Путь к ресурсу \t Location Тип несоответствие типа: найдено com.mongb.casbah.commons.Imports.DBObject (который расширяется до) com.mongodb.DBObject требуется: com.mongodb.casbah.Imports.ReadPreference (который расширяется до) com.mongod.ReadPreference ". Я думаю, что findOne не принимает более двух значений. Не могли бы вы мне помочь ? – optimus