Vous pouvez modifier votre requête comme suit :
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
}
Je pense qu'il vous manquait le com.mongodb.client.model.Projections
importe afin d'utiliser les fields
, include
et excludeId
J'ai utilisé first
au lieu de limit(1)
pour faciliter l'extraction du résultat.
first
renvoie un Document
objet sur lequel vous pouvez appeler get
pour récupérer la valeur du champ demandé.
Mais en fait, puisque vous ne voulez qu'un seul enregistrement et un seul champ, vous pouvez supprimer la projection ! :
val record = collection.find().first