Java Examples for com.mongodb.client.model.Projections.slice

The following java examples will help you to understand the usage of com.mongodb.client.model.Projections.slice. These source code samples are taken from different open source projects.

Example 1
Project: mongo-java-driver-master  File: DocumentationSamples.java View source code
@Test
@SuppressWarnings("unchecked")
public void testProjectingFields() throws InterruptedException, ExecutionException, TimeoutException {
    //Start Example 42
    final CountDownLatch insertLatch = new CountDownLatch(1);
    collection.insertMany(asList(Document.parse("{ item: 'journal', status: 'A', size: { h: 14, w: 21, uom: 'cm' }, instock: [ { warehouse: 'A', qty: 5 }]}"), Document.parse("{ item: 'notebook', status: 'A',  size: { h: 8.5, w: 11, uom: 'in' }, instock: [ { warehouse: 'C', qty: 5}]}"), Document.parse("{ item: 'paper', status: 'D', size: { h: 8.5, w: 11, uom: 'in' }, instock: [ { warehouse: 'A', qty: 60 }]}"), Document.parse("{ item: 'planner', status: 'D', size: { h: 22.85, w: 30, uom: 'cm' }, instock: [ { warehouse: 'A', qty: 40}]}"), Document.parse("{ item: 'postcard', status: 'A', size: { h: 10, w: 15.25, uom: 'cm' }, " + "instock: [ { warehouse: 'B', qty: 15 }, { warehouse: 'C', qty: 35 } ] }")), new SingleResultCallback<Void>() {

        @Override
        public void onResult(final Void result, final Throwable t) {
            // Process results
            insertLatch.countDown();
        }
    });
    insertLatch.await(10, TimeUnit.SECONDS);
    // End Example 42
    final CountDownLatch check1 = new CountDownLatch(1);
    collection.count(new SingleResultCallback<Long>() {

        @Override
        public void onResult(final Long result, final Throwable t) {
            assertEquals(Long.valueOf(5), result);
            check1.countDown();
        }
    });
    //Start Example 43
    FindIterable<Document> findIterable = collection.find(eq("status", "A"));
    //End Example 43
    final CountDownLatch check2 = new CountDownLatch(1);
    findIterable.into(new ArrayList<Document>(), new SingleResultCallback<ArrayList<Document>>() {

        @Override
        public void onResult(final ArrayList<Document> result, final Throwable t) {
            assertEquals(3, result.size());
            check2.countDown();
        }
    });
    //Start Example 44
    findIterable = collection.find(eq("status", "A")).projection(include("item", "status"));
    //End Example 44
    FutureResultCallback<Void> check3 = new FutureResultCallback<Void>();
    findIterable.forEach(new Block<Document>() {

        @Override
        public void apply(final Document document) {
            assertEquals(new HashSet<String>(asList("_id", "item", "status")), document.keySet());
        }
    }, check3);
    //Start Example 45
    findIterable = collection.find(eq("status", "A")).projection(fields(include("item", "status"), excludeId()));
    //End Example 45
    FutureResultCallback<Void> check4 = new FutureResultCallback<Void>();
    findIterable.forEach(new Block<Document>() {

        @Override
        public void apply(final Document document) {
            assertEquals(new HashSet<String>(asList("item", "status")), document.keySet());
        }
    }, check4);
    //Start Example 46
    findIterable = collection.find(eq("status", "A")).projection(exclude("item", "status"));
    //End Example 46
    FutureResultCallback<Void> check5 = new FutureResultCallback<Void>();
    findIterable.forEach(new Block<Document>() {

        @Override
        public void apply(final Document document) {
            assertEquals(new HashSet<String>(asList("_id", "size", "instock")), document.keySet());
        }
    }, check5);
    //Start Example 47
    findIterable = collection.find(eq("status", "A")).projection(include("item", "status", "size.uom"));
    //End Example 47
    FutureResultCallback<Void> check6 = new FutureResultCallback<Void>();
    findIterable.forEach(new Block<Document>() {

        @Override
        public void apply(final Document document) {
            assertEquals(new HashSet<String>(asList("_id", "item", "status", "size")), document.keySet());
            assertEquals(new HashSet<String>(singletonList("uom")), document.get("size", Document.class).keySet());
        }
    }, check6);
    //Start Example 48
    findIterable = collection.find(eq("status", "A")).projection(exclude("size.uom"));
    //End Example 48
    FutureResultCallback<Void> check7 = new FutureResultCallback<Void>();
    findIterable.forEach(new Block<Document>() {

        @Override
        public void apply(final Document document) {
            assertEquals(new HashSet<String>(asList("_id", "item", "instock", "status", "size")), document.keySet());
            assertEquals(new HashSet<String>(asList("h", "w")), document.get("size", Document.class).keySet());
        }
    }, check7);
    //Start Example 49
    findIterable = collection.find(eq("status", "A")).projection(include("item", "status", "instock.qty"));
    //End Example 49
    FutureResultCallback<Void> check8 = new FutureResultCallback<Void>();
    findIterable.forEach(new Block<Document>() {

        @Override
        public void apply(final Document document) {
            assertEquals(new HashSet<String>(asList("_id", "item", "instock", "status")), document.keySet());
            List<Document> instock = (List<Document>) document.get("instock");
            for (Document stockDocument : instock) {
                assertEquals(new HashSet<String>(singletonList("qty")), stockDocument.keySet());
            }
        }
    }, check8);
    //Start Example 50
    findIterable = collection.find(eq("status", "A")).projection(fields(include("item", "status"), slice("instock", -1)));
    //End Example 50
    FutureResultCallback<Void> check9 = new FutureResultCallback<Void>();
    findIterable.forEach(new Block<Document>() {

        @Override
        public void apply(final Document document) {
            assertEquals(new HashSet<String>(asList("_id", "item", "instock", "status")), document.keySet());
            List<Document> instock = (List<Document>) document.get("instock");
            assertEquals(1, instock.size());
        }
    }, check9);
    assertTrue(check1.await(10, TimeUnit.SECONDS));
    assertTrue(check2.await(10, TimeUnit.SECONDS));
    check3.get(10, TimeUnit.SECONDS);
    check4.get(10, TimeUnit.SECONDS);
    check5.get(10, TimeUnit.SECONDS);
    check6.get(10, TimeUnit.SECONDS);
    check7.get(10, TimeUnit.SECONDS);
    check8.get(10, TimeUnit.SECONDS);
    check9.get(10, TimeUnit.SECONDS);
}