2014-10-14 3 views
0

Я новичок в casbah и mongodb. Я пытаюсь написать scala-код, чтобы найти максимальное значение столбца.Поиск максимального значения атрибута в mongoDB с использованием casbah

Например:

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

Программа должна отображать максимальное количество ид, как 4 Не могли бы вы, пожалуйста, дайте мне знать, как это сделать?

Спасибо!

ответ

1

Это довольно простой материал, поэтому я рекомендую посмотреть 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.

+0

Первое спасибо за отклик. Я попробовал аналогичный код, который вы упомянули. Но я получаю сообщение об ошибке «Путь к ресурсу \t Location Тип несоответствие типа: найдено com.mongb.casbah.commons.Imports.DBObject (который расширяется до) com.mongodb.DBObject требуется: com.mongodb.casbah.Imports.ReadPreference (который расширяется до) com.mongod.ReadPreference ". Я думаю, что findOne не принимает более двух значений. Не могли бы вы мне помочь ? – optimus

Смежные вопросы