Spring webflux ReactiveMongoOperations, найденные elemMatch

Oct 05 2020

У меня есть такая коллекция:

{"type": "bbb", "category": "aaa", "from": "eee", "INTERLOCUTOR": ["test1", "test2"]}

и я хочу найти INTERLOCUTOR, у которого есть test1 ; как использовать ReactiveMongoOperations ?

Ответы

2 Tahero Oct 05 2020 at 10:09
db.collection.find({"INTERLOCUTOR" : "test1"})
2 prasad_ Oct 05 2020 at 11:37

Использование ReactiveMongoOperationsи обработка возвращенных документов reactor.core.publisher.Fluxдля печати по запросу:

ReactiveMongoOperations ops = new ReactiveMongoTemplate(MongoClients.create(), "test");
Criteria c = Criteria.where("INTERLOCUTOR").is("test1");
Query qry = new Query(c);

Flux<Document> flux = ops.find(qry, Document.class, "coll")
flux.subscribe(doc -> System.out.println(doc), throwable -> throwable.printStackTrace());

Обратите внимание, что запрос фактически выполняется при запуске subscribeметода. Поскольку подписка выполняется как асинхронная операция, при ее запуске добавьте следующее к текущему потоку (для его блокировки до завершения асинхронной операции).

try {
  Thread.sleep(1000);
} catch(InterruptedException e ) {}