У меня проблема с тем, что если я использую строку, представляющую случайный UUID, в качестве одного из полей в моем классе дел, функция upsert в MongoDB не работает должным образом, так как она не может выполнить вставку записи.
Например, у меня есть простой класс case, такой как
case class Foo(id : String, date : String)
. Я создаю экземпляр значения для этого класса следующим образом:
val value = Foo(java.util.UUID.randomUUID.toString, "2019-10-11")
Затем я вставляю его в монгоколлекция выглядит следующим образом:
collection.findAndUpdate(BSONDocument("id" -> value.id), value, upsert = true).map(_.result[Foo])
Коллекция изначально пуста, и поэтому логика должна заключаться в том, что она должна вставлять value
в коллекцию, поскольку ее там нет.Но это не так.
Если я изменю способ генерации значения поля id
, скажем так:
val value = Foo("123-ABC", "2019-10-11")
, то это сработает, и я получу вставку записи в коллекцию.
Типичные значения randomUUID выглядят как 80eedffc-3e49-488b-8274-5711ad984a0c.Это не приемлемо для Монго или я делаю что-то еще неправильно?