schema(key) {
    if (!key) return this._schema;

    const genericKey = MongoObject.makeKeyGeneric(key);
    let keySchema = this._schema[genericKey];

    // If not defined in this schema, see if it's defined in a subschema
    if (!keySchema) {
      let found = false;
      this.forEachAncestorSimpleSchema(key, (simpleSchema, ancestor, subSchemaKey) => {
        if (!found) keySchema = simpleSchema.schema(subSchemaKey);
        if (keySchema) found = true;
      });
    }

    return keySchema;
  }
@param {String} [key] One specific or generic key for which to get the schema.
@returns {Object} The entire schema object or just the definition for one key.

Note that this returns the raw, unevaluated definition object. Use `getDefinition`
if you want the evaluated definition, where any properties that are functions
have been run to produce a result.