public <T extends MongoEntity> MongoCollection<T> collection(String collectionName, Class<T> valueType) {
        return getCollection(collectionName, valueType);
    }
@Test
    void testBasicTypes() {
        final MongoCollection<Person> collection = collections.collection("people", Person.class);
        final Person person = new Person(
                "000000000000000000000001",
                "000000000000000000000002",
                new ObjectId("000000000000000000000003"),
                "Gary",
                ZonedDateTime.now(ZoneOffset.UTC).withNano(0),
                DateTime.now(DateTimeZone.UTC).withMillisOfSecond(0));

        final InsertOneResult insertOneResult = collection.insertOne(person);
        assertThat(insertOneResult.getInsertedId()).isNotNull().satisfies(bson ->
                assertThat(bson.asObjectId().getValue().toHexString()).isEqualTo(person.id()));

        assertThat(collection.find()).hasSize(1).allMatch(person::equals);
        assertThat(collection.find(Filters.eq("_id", new ObjectId(person.id())))).hasSize(1);
        assertThat(collection.find(Filters.type("_id", BsonType.OBJECT_ID))).hasSize(1);
        assertThat(collection.find(Filters.type("external_id", BsonType.OBJECT_ID))).hasSize(1);
        assertThat(collection.find(Filters.eq("external_id", new ObjectId(person.externalId())))).hasSize(1);
        assertThat(collection.find(Filters.type("object_id", BsonType.OBJECT_ID))).hasSize(1);
        assertThat(collection.find(Filters.eq("object_id", person.objectId()))).hasSize(1);
        assertThat(collection.find(Filters.type("first_name", BsonType.STRING))).hasSize(1);
        assertThat(collection.find(Filters.eq("first_name", person.firstName()))).hasSize(1);
        assertThat(collection.find(Filters.type("created_at", BsonType.DATE_TIME))).hasSize(1);
        assertThat(collection.find(Filters.eq("created_at", person.createdAt()))).hasSize(1);
        assertThat(collection.find(Filters.type("last_modified_at", BsonType.DATE_TIME))).hasSize(1);
        assertThat(collection.find(Filters.eq("last_modified_at", person.lastModifiedAt()))).hasSize(1);
    }