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