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