sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB Scala - fråga dokument för ett specifikt fältvärde

Du kan ändra din fråga på detta sätt:

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
}

Jag tror att du saknade com.mongodb.client.model.Projections importer för att använda fields , include och excludeId

Jag använde first istället för limit(1) för att göra det lättare att extrahera resultatet.

first returnerar ett Document objekt som du kan anropa get på för att hämta värdet för det begärda fältet.

Men i själva verket, eftersom du bara vill ha en post och ett fält, kan du ta bort projektionen!:

val record = collection.find().first


  1. Hur man kontrollerar om ett index är dolt i MongoDB

  2. MongoDB/Mongoose - Fråga efter en uppsättning objekt efter datum

  3. MongoDB lägg till anslutningsfältet från bas ett

  4. MongoDB:$lookup returnerar tom array