Bạn có thể sửa đổi truy vấn của mình theo cách này:
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
}
Tôi nghĩ rằng bạn đã thiếu com.mongodb.client.model.Projections nhập để sử dụng các trường fields , include và excludeId
Tôi đã sử dụng first thay vì limit(1) để giúp trích xuất kết quả dễ dàng hơn.
first trả về một Document đối tượng mà bạn có thể gọi get để truy xuất giá trị của trường được yêu cầu.
Nhưng trên thực tế, vì bạn chỉ muốn một bản ghi và một trường, nên bạn có thể xóa phép chiếu !:
val record = collection.find().first