U kunt uw zoekopdracht op deze manier wijzigen:
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
}
Ik denk dat je de com.mongodb.client.model.Projections
. miste importeert om fields
te gebruiken , include
en excludeId
Ik gebruikte first
in plaats van limit(1)
om het resultaat gemakkelijker te kunnen extraheren.
first
retourneert een Document
object waarop u get
. kunt aanroepen om de waarde van het gevraagde veld op te halen.
Maar aangezien u slechts één record en één veld wilt, kunt u de projectie verwijderen!:
val record = collection.find().first