MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

MongoDB Scala - document de requête pour une valeur de champ spécifique

Vous pouvez modifier votre requête comme suit :

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
}

Je pense qu'il vous manquait le com.mongodb.client.model.Projections importe afin d'utiliser les fields , include et excludeId

J'ai utilisé first au lieu de limit(1) pour faciliter l'extraction du résultat.

first renvoie un Document objet sur lequel vous pouvez appeler get pour récupérer la valeur du champ demandé.

Mais en fait, puisque vous ne voulez qu'un seul enregistrement et un seul champ, vous pouvez supprimer la projection ! :

val record = collection.find().first