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