метод обновления документа mongodb - PullRequest
0 голосов
/ 21 января 2020

Я хотел бы создать универсальный c метод обновления, который принимает в качестве входных данных Object _id и строку (Json), которые соответствуют обновлению, которое нужно выполнить.

Мне нужно преобразовать переменную inputDocument в тип документа, который будет передан в методе обновления

Мне нужно иметь этот тип c способ ввода, потому что я хотел бы использовать этот метод на любом поле коллекции,

Как мне этого добиться?

  def updateField(_id : String, inputDocument : String): Future[UpdateResult] = {

/* inputDocument = {"key" : value}*/

    val mongoClient = MongoClient("mongodb://localhost:27017")
    val database: MongoDatabase = mongoClient.getDatabase("databaseName")
    val collection: MongoCollection[Document] = database.getCollection("collectionName")

    val updateDocument = Document("$set" -> inputDocument)

    collection
      .updateOne(Filters.eq("_id", BsonObjectId(_id)), updateDocument)
      .toFuture()
  }

1 Ответ

1 голос
/ 23 января 2020

Мои мысли об обработке переменной inputDocument были неверны. Действительно необходимо преобразовать входные данные в документ. org.mongodb. scala .bson.collection.mutable.Document имеет метод apply () для анализа строки json в документе. Спасибо всем за ваши комментарии.

  def updateField(_id : String, inputDocument : String): Future[UpdateResult] = {

    /* inputDocument = {"key" : value}*/

    val mongoClient = MongoClient("mongodb://localhost:27017")
    val database: MongoDatabase = mongoClient.getDatabase("databaseName")
    val collection: MongoCollection[Document] = database.getCollection("collectionName")

    val updateDocument = Document("$set" -> Document(inputDocument))

    collection
      .updateOne(Filters.eq("_id", BsonObjectId(_id)), updateDocument)
      .toFuture()
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...