sql >> Base de Datos >  >> NoSQL >> MongoDB

MongoDB Scala - documento de consulta para un valor de campo específico

Puede modificar su consulta de esta manera:

import com.mongodb.MongoClient
import com.mongodb.client.MongoCollection
import com.mongodb.client.model.Projections

def getLatestCommitOffsetFromDB(
  databaseName: String,
  collectionName: String
): Long = {

  val mongoClient = new MongoClient("localhost", 27017);

  val collection =
    mongoClient.getDatabase(databaseName).getCollection(collectionName)

  val record = collection
    .find()
    .projection(
      Projections
        .fields(Projections.include("offset"), Projections.excludeId()))
    .first

  record.get("offset").asInstanceOf[Double].toLong
}

Creo que te faltaba com.mongodb.client.model.Projections importaciones para usar fields , include y excludeId

Usé first en lugar de limit(1) para que sea más fácil extraer el resultado.

first devuelve un Document objeto en el que puede llamar a get para recuperar el valor del campo solicitado.

Pero, de hecho, dado que solo desea un registro y un campo, ¡puede eliminar la proyección!:

val record = collection.find().first