Можете да промените заявката си по този начин:
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
}
Мисля, че сте пропуснали com.mongodb.client.model.Projections
импортира, за да използва fields
, include
и excludeId
Използвах first
вместо limit(1)
за да улесните извличането на резултата.
first
връща Document
обект, на който можете да извикате get
за извличане на стойността на заявеното поле.
Но всъщност, тъй като искате само един запис и едно поле, можете да премахнете проекцията!:
val record = collection.find().first