MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB Scala – Abfragedokument für einen bestimmten Feldwert

Sie können Ihre Abfrage folgendermaßen ändern:

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
}

Ich glaube, Sie haben die com.mongodb.client.model.Projections vermisst importiert, um fields zu verwenden , include und excludeId

Ich habe first verwendet statt limit(1) um das Extrahieren des Ergebnisses zu erleichtern.

first gibt ein Document zurück Objekt, auf dem Sie get aufrufen können um den Wert des angeforderten Felds abzurufen.

Da Sie jedoch nur einen Datensatz und ein Feld benötigen, können Sie die Projektion entfernen!:

val record = collection.find().first