Sie können Ihre Abfrage folgendermaßen ändern:
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
}
Ich glaube, Sie haben die com.mongodb.client.model.Projections vermisst importiert, um fields zu verwenden , include und excludeId
Ich habe first verwendet statt limit(1) um das Extrahieren des Ergebnisses zu erleichtern.
first gibt ein Document zurück Objekt, auf dem Sie get aufrufen können um den Wert des angeforderten Felds abzurufen.
Da Sie jedoch nur einen Datensatz und ein Feld benötigen, können Sie die Projektion entfernen!:
val record = collection.find().first