Du kan ändra din fråga på detta sätt:
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
}
Jag tror att du saknade com.mongodb.client.model.Projections
importer för att använda fields
, include
och excludeId
Jag använde first
istället för limit(1)
för att göra det lättare att extrahera resultatet.
first
returnerar ett Document
objekt som du kan anropa get
på för att hämta värdet för det begärda fältet.
Men i själva verket, eftersom du bara vill ha en post och ett fält, kan du ta bort projektionen!:
val record = collection.find().first