sql >> Database >  >> NoSQL >> MongoDB

MongoDB Scala - document opvragen voor een specifieke veldwaarde

U kunt uw zoekopdracht op deze manier wijzigen:

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
}

Ik denk dat je de com.mongodb.client.model.Projections . miste importeert om fields te gebruiken , include en excludeId

Ik gebruikte first in plaats van limit(1) om het resultaat gemakkelijker te kunnen extraheren.

first retourneert een Document object waarop u get . kunt aanroepen om de waarde van het gevraagde veld op te halen.

Maar aangezien u slechts één record en één veld wilt, kunt u de projectie verwijderen!:

val record = collection.find().first


  1. Retourneer alleen overeenkomende subdocumentelementen binnen een geneste array

  2. converteren van blob naar binair om het op te slaan in mongodb

  3. Hoe werkt de $inc-modifier met gelijktijdige verzoeken in mongodb?

  4. Hadoop - Een Apache Hadoop-zelfstudie voor beginners