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