Поиск максимального значения атрибута в mongoDB с использованием casbah

Я новичок в casbah и mongodb. Я пытаюсь написать код scala, чтобы найти максимальное значение столбца.

Например:

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

Программа должна отображать максимальное количество идентификаторов как 4. Не могли бы вы сообщить мне, как это сделать?

Спасибо!!


person optimus    schedule 14.10.2014    source источник


Ответы (1)


Это довольно простой материал, поэтому я настоятельно рекомендую просмотреть руководства по MongoDB, чтобы получить базовое заземление. Кроме того, есть бесплатная образовательная онлайн-платформа от 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.

person Ross    schedule 14.10.2014
comment
Прежде всего спасибо за ответ. Я пробовал аналогичный код, который вы упомянули. Но я получаю сообщение об ошибке: несоответствие типа расположения пути к ресурсу; найдено: com.mongodb.casbah.commons.Imports.DBObject (который расширяется до) com.mongodb.DBObject требуется: com.mongodb.casbah.Imports.ReadPreference (который расширяется до) com.mongodb.ReadPreference. Я думаю, что findOne не принимает более двух значений. Не могли бы вы мне помочь ? - person optimus; 14.10.2014