MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

MongoDB Scala - interroga il documento per un valore di campo specifico

Puoi modificare la tua richiesta in questo modo:

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
}

Penso che ti mancasse il com.mongodb.client.model.Projections importa per utilizzare i fields , include e excludeId

Ho usato first invece di limit(1) per facilitare l'estrazione del risultato.

first restituisce un Document oggetto su cui puoi chiamare get per recuperare il valore del campo richiesto.

Ma in effetti, poiché vuoi solo un record e un campo, puoi rimuovere la proiezione!:

val record = collection.find().first