use of io.quarkus.mongodb.FindOptions in project quarkus by quarkusio.
the class ReactiveMongoClientTest method testFindBatchWithClass.
@Test
void testFindBatchWithClass() {
String collectionName = randomCollection();
ReactiveMongoCollection<Document> myCollection = client.getDatabase(DATABASE).getCollection(collectionName);
List<Document> toBeInserted = new ArrayList<>();
for (int i = 0; i < 3000; i++) {
toBeInserted.add(createDoc(i));
}
List<Document> documents = new CopyOnWriteArrayList<>();
myCollection.insertMany(toBeInserted).chain(() -> myCollection.find(Document.class, new FindOptions().sort(eq("foo", 1))).onItem().invoke(documents::add).onItem().ignoreAsUni()).await().indefinitely();
assertThat(documents.size()).isEqualTo(3000);
assertThat(documents.get(0).getString("foo")).isEqualTo("bar0");
assertThat(documents.get(3000 - 1).getString("foo")).isEqualTo("bar999");
}
use of io.quarkus.mongodb.FindOptions in project quarkus by quarkusio.
the class CommonReactivePanacheQueryImpl method singleResultOptional.
public <T extends Entity> Uni<Optional<T>> singleResultOptional() {
FindOptions options = buildOptions(2);
Multi<T> results = mongoQuery == null ? collection.find(options) : collection.find(mongoQuery, options);
return results.collect().asList().map(list -> {
if (list.size() == 2) {
throw new PanacheQueryException("There should be no more than one result");
}
return list.isEmpty() ? Optional.empty() : Optional.of(list.get(0));
});
}
use of io.quarkus.mongodb.FindOptions in project quarkus by quarkusio.
the class CommonReactivePanacheQueryImpl method buildOptions.
private FindOptions buildOptions(int maxResults) {
FindOptions options = new FindOptions();
options.sort(sort);
if (range != null) {
// range is 0 based, so we add 1 to the limit
options.skip(range.getStartIndex());
} else if (page != null) {
options.skip(page.index * page.size);
}
if (projections != null) {
options.projection(this.projections);
}
if (this.collation != null) {
options.collation(collation);
}
return options.limit(maxResults);
}
use of io.quarkus.mongodb.FindOptions in project quarkus by quarkusio.
the class CommonReactivePanacheQueryImpl method firstResultOptional.
public <T extends Entity> Uni<Optional<T>> firstResultOptional() {
FindOptions options = buildOptions(1);
Multi<T> results = mongoQuery == null ? collection.find(options) : collection.find(mongoQuery, options);
return results.collect().first().map(o -> Optional.ofNullable(o));
}
use of io.quarkus.mongodb.FindOptions in project quarkus by quarkusio.
the class CollectionManagementTest method find.
@Test
void find() {
ReactiveMongoDatabase database = client.getDatabase(DATABASE);
ReactiveMongoCollection<Document> collection = database.getCollection("test");
CompletableFuture.allOf(collection.insertOne(new Document("id", 1).append("name", "superman").append("type", "heroes").append("stars", 5)).subscribeAsCompletionStage(), collection.insertOne(new Document("id", 2).append("name", "batman").append("type", "heroes").append("stars", 4)).subscribeAsCompletionStage(), collection.insertOne(new Document("id", 3).append("name", "frogman").append("type", "villain").append("stars", 1)).subscribeAsCompletionStage(), collection.insertOne(new Document("id", 4).append("name", "joker").append("type", "villain").append("stars", 5)).subscribeAsCompletionStage()).join();
assertThat(collection.find().collect().asList().await().indefinitely()).hasSize(4);
Assertions.assertThat(collection.find(new FindOptions().comment("hello")).collect().asList().await().indefinitely()).hasSize(4);
assertThat(collection.find().collect().asList().await().indefinitely()).hasSize(4);
assertThat(collection.find(Document.class).collect().asList().await().indefinitely()).hasSize(4);
assertThat(collection.find(Document.class, new FindOptions().skip(1)).collect().asList().await().indefinitely()).hasSize(3);
assertThat(collection.find(Document.class).collect().asList().await().indefinitely()).hasSize(4);
assertThat(collection.find(eq("type", "heroes")).collect().asList().await().indefinitely()).hasSize(2);
assertThat(collection.find(eq("type", "heroes"), new FindOptions()).collect().asList().await().indefinitely()).hasSize(2);
assertThat(collection.find(eq("type", "heroes")).collect().asList().await().indefinitely()).hasSize(2);
assertThat(collection.find(eq("type", "heroes"), Document.class).collect().asList().await().indefinitely()).hasSize(2);
assertThat(collection.find(eq("type", "heroes"), Document.class, new FindOptions().partial(true)).collect().asList().await().indefinitely()).hasSize(2);
assertThat(collection.find(eq("type", "heroes"), Document.class).collect().asList().await().indefinitely()).hasSize(2);
}
Aggregations