Możesz zmodyfikować zapytanie w ten sposób:
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
}
Myślę, że brakowało Ci com.mongodb.client.model.Projections
importuje w celu użycia fields
, include
i excludeId
Użyłem first
zamiast limit(1)
aby ułatwić wyodrębnienie wyniku.
first
zwraca Document
obiekt, na którym możesz wywołać get
aby pobrać wartość żądanego pola.
Ale w rzeczywistości, ponieważ potrzebujesz tylko jednego rekordu i jednego pola, możesz usunąć projekcję!:
val record = collection.find().first