Я использую Spring Boot 2.0.2, и я хотел бы вставить содержимое Flux
в массив документа в MongoDB, используя Spring Data, его реактивную поддержку mongodb, используя ReactiveMongoOperations .Например (код Котлина):
val mongo : ReactiveMongoOperations = ...
data class Something(val data: String)
val flux = Flux.just(Something("A"), Something("B"))
mongo.upsert(query(where("_id").isEqualTo("myId")),
Update().push("myArray").each(flux),
"collection")
(обратите внимание, что это всего лишь пример, и flux
не генерируется с использованием Flux.just(..)
в реальном коде).
Хотя это работает, оно не дает желаемого результата:
{ "_id" : "myId", "myArray" : [ { "array" : [ { "data" : "A" }, { "data" : "B" } ], "_class" : "reactor.core.publisher.FluxArray" } ] }
Я бы хотел, чтобы результат был:
{ "_id" : "myId", "myArray" : [ { "data" : "A" }, { "data" : "B" } ] }
то есть данные Springсериализует содержимое (элементы) в Flux
, а не в Flux
.Этот пример дает правильный результат:
mongo.upsert(query(where("_id").isEqualTo("myId")),
Update().push("myArray").each(Something("A"), Something("B")),
"collection")
Как мне добиться этого без блокировки ?