protected Stream<DTO> streamQueryWithSort(Bson query, Bson sort) {
        final DBCursor<DTO> cursor = db.find(query).sort(sort);
        return Streams.stream((Iterable<DTO>) cursor).onClose(cursor::close);
    }
@Test
    public void streamQueryWithSort() {
        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", "hello5", "hello3", "hello1");
        final DBSort.SortBuilder sort = DBSort.desc("title");

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

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