MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

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


Você pode modificar sua consulta desta forma:
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
}

Acho que você estava perdendo o com.mongodb.client.model.Projections importações para usar fields , include e excludeId

Eu usei first em vez de limit(1) para facilitar a extração do resultado.

first retorna um Document objeto no qual você pode chamar get para recuperar o valor do campo solicitado.

Mas, na verdade, como você quer apenas um registro e um campo, pode remover a projeção!:
val record = collection.find().first