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