IllegalArgumentException: Invalid BSON uuid field name

So, I tried seemingly countless things to make this work. When I call queueWrite , the println statements give me the following:

{ "uuid" : "49f2-0b64-4bf3-49f2a35b-bbe8-4954f742d88b" }

and this:

{ "uuid" : "49f2-0b64-4bf3-49f2a35b-bbe8-4954f742d88b", "name" : "personName", "key" : "3E6A" }

Which (I'm sure) is all right. However, after listing it, I get the following:

java.lang.IllegalArgumentException: Invalid BSON field name uuid

Afaik, the uuid field name is fine, the only thing I can say about the wrong name that I can really find is just to make sure there is n’t. ”Characters in it (which isn’t)

  def queueWrite(collection: String, filter: Map[String, () => String], data: Map[String, () => String]) {
    val col = collections.get(collection).get

    val filterDoc = new BsonDocument
    filter.foreach(f => { filterDoc append (f._1, new BsonString(f._2.apply)) })
    val filterBson = Document(filterDoc)
    println("filter: \n" + filterBson.toJson)

    val dataDoc = new BsonDocument
    data.foreach(f => { dataDoc append (f._1, new BsonString(f._2.apply)) })
    val dataBson = Document(dataDoc)
    println("data: \n" + dataBson.toJson)

    val options = new FindOneAndUpdateOptions
    options.returnDocument(ReturnDocument.AFTER)
    options.upsert(true)

    val observer = new Observer[Document] {
      override def onSubscribe(s: Subscription) = s.request(1)
      override def onNext(doc: Document) = println(doc.toJson)
      override def onError(e: Throwable) = e.printStackTrace
      override def onComplete = println("onComplete")
    }

    val observable: Observable[Document] = col.findOneAndUpdate(filterBson, dataBson, options)
    observable.subscribe(observer)

  }

Any ideas / suggestions are welcome, as always :)

+4
source share

Source: https://habr.com/ru/post/1673444/


All Articles