Anda dapat mengubah kueri Anda dengan cara ini:
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
}
Saya pikir Anda melewatkan com.mongodb.client.model.Projections
impor untuk menggunakan fields
, include
dan excludeId
Saya menggunakan first
bukannya limit(1)
untuk mempermudah mengekstrak hasilnya.
first
mengembalikan Document
objek tempat Anda dapat memanggil get
untuk mengambil nilai bidang yang diminta.
Namun nyatanya, karena Anda hanya menginginkan satu rekaman dan satu bidang, Anda dapat menghapus proyeksi!:
val record = collection.find().first