Search in sources :

Example 1 with FindOptions

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");
}
Also used : FindOptions(io.quarkus.mongodb.FindOptions) ArrayList(java.util.ArrayList) CopyOnWriteArrayList(java.util.concurrent.CopyOnWriteArrayList) Document(org.bson.Document) CopyOnWriteArrayList(java.util.concurrent.CopyOnWriteArrayList) Test(org.junit.jupiter.api.Test)

Example 2 with FindOptions

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));
    });
}
Also used : FindOptions(io.quarkus.mongodb.FindOptions) PanacheQueryException(io.quarkus.panache.common.exception.PanacheQueryException)

Example 3 with FindOptions

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);
}
Also used : FindOptions(io.quarkus.mongodb.FindOptions)

Example 4 with FindOptions

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));
}
Also used : FindOptions(io.quarkus.mongodb.FindOptions)

Example 5 with FindOptions

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);
}
Also used : FindOptions(io.quarkus.mongodb.FindOptions) Document(org.bson.Document) ReturnDocument(com.mongodb.client.model.ReturnDocument) Test(org.junit.jupiter.api.Test)

Aggregations

FindOptions (io.quarkus.mongodb.FindOptions)9 Test (org.junit.jupiter.api.Test)4 Document (org.bson.Document)3 PanacheQueryException (io.quarkus.panache.common.exception.PanacheQueryException)2 ArrayList (java.util.ArrayList)2 CopyOnWriteArrayList (java.util.concurrent.CopyOnWriteArrayList)2 ReturnDocument (com.mongodb.client.model.ReturnDocument)1 ZonedDateTime (java.time.ZonedDateTime)1 Bson (org.bson.conversions.Bson)1 JobStatus (org.kie.kogito.jobs.service.model.JobStatus)1 JobDetails (org.kie.kogito.jobs.service.model.job.JobDetails)1