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 ) {}