protected Stream<DTO> streamQuery(Bson query) {
        final DBCursor<DTO> cursor = db.find(query);
        return Streams.stream((Iterable<DTO>) cursor).onClose(cursor::close);
    }
@Test
    public void streamQuery() {
        dbService.save(newDto("hello1"));
        dbService.save(newDto("hello2"));
        dbService.save(newDto("hello3"));
        dbService.save(newDto("hello4"));
        dbService.save(newDto("hello5"));

        final DBQuery.Query query = DBQuery.in("title", "hello1", "hello3", "hello4");

        try (final Stream<TestDTO> cursor = dbService.streamQuery(query)) {
            final List<TestDTO> list = cursor.collect(Collectors.toList());

            assertThat(list)
                    .hasSize(3)
                    .extracting("title")
                    .containsExactly("hello1", "hello3", "hello4");
        }
    }