Interface SchemaOptions<DocType, TInstanceMethods, QueryHelpers, TStaticMethods, TVirtuals, THydratedDocumentType>

Type Parameters

  • DocType = unknown

  • TInstanceMethods = {}

  • QueryHelpers = {}

  • TStaticMethods = {}

  • TVirtuals = {}

  • THydratedDocumentType = HydratedDocument<DocType, TInstanceMethods, QueryHelpers>

Hierarchy

  • SchemaOptions

Properties

_id?: boolean

Mongoose assigns each of your schemas an _id field by default if one is not passed into the Schema constructor. The type assigned is an ObjectId to coincide with MongoDB's default behavior. If you don't want an _id added to your schema at all, you may disable it using this option.

autoCreate?: boolean

If set to true, Mongoose will call Model.createCollection() to create the underlying collection in MongoDB if autoCreate is set to true. Calling createCollection() sets the collection's default collation based on the collation option and establishes the collection as a capped collection if you set the capped schema option.

autoIndex?: boolean

By default, Mongoose's init() function creates all the indexes defined in your model's schema by calling Model.createIndexes() after you successfully connect to MongoDB. If you want to disable automatic index builds, you can set autoIndex to false.

bufferCommands?: boolean

By default, mongoose buffers commands when the connection goes down until the driver manages to reconnect. To disable buffering, set bufferCommands to false.

bufferTimeoutMS?: number

If bufferCommands is on, this option sets the maximum amount of time Mongoose buffering will wait before throwing an error. If not specified, Mongoose will use 10000 (10 seconds).

capped?: number | boolean | {
    autoIndexId?: boolean;
    max?: number;
    size?: number;
}

Mongoose supports MongoDBs capped collections. To specify the underlying MongoDB collection be capped, set the capped option to the maximum size of the collection in bytes.

Type declaration

  • Optional autoIndexId?: boolean
  • Optional max?: number
  • Optional size?: number
castNonArrays?: boolean

Set whether to cast non-array values to arrays.

Default

true
collation?: CollationOptions

Sets a default collation for every query and aggregation.

collection?: string

Mongoose by default produces a collection name by passing the model name to the utils.toCollectionName method. This method pluralizes the name. Set this option if you need a different name for your collection.

collectionOptions?: CreateCollectionOptions

Arbitrary options passed to createCollection()

discriminatorKey?: string

When you define a discriminator, Mongoose adds a path to your schema that stores which discriminator a document is an instance of. By default, Mongoose adds an __t path, but you can set discriminatorKey to overwrite this default.

Default

'__t'
excludeIndexes?: boolean

Option for nested Schemas.

If true, skip building indexes on this schema's path.

Default

false
expireAfterSeconds?: number

The number of seconds after which a document in a timeseries collection expires.

expires?: string | number

The time after which a document in a timeseries collection expires.

id?: boolean

Mongoose assigns each of your schemas an id virtual getter by default which returns the document's _id field cast to a string, or in the case of ObjectIds, its hexString.

methods?: IfEquals<TInstanceMethods, {}, Record<any, ((this, ...args) => unknown)>, TInstanceMethods>

Document instance methods.

Type declaration

    minimize?: boolean

    Mongoose will, by default, "minimize" schemas by removing empty objects. This behavior can be overridden by setting minimize option to false. It will then store empty objects.

    optimisticConcurrency?: boolean

    Optimistic concurrency is a strategy to ensure the document you're updating didn't change between when you loaded it using find() or findOne(), and when you update it using save(). Set to true to enable optimistic concurrency.

    overwriteModels?: boolean

    Set to true to default to overwriting models with the same name when calling mongoose.model(), as opposed to throwing an OverwriteModelError.

    Default

    false
    
    pluginTags?: string[]

    If plugin() called with tags, Mongoose will only apply plugins to schemas that have a matching tag in pluginTags

    query?: IfEquals<QueryHelpers, {}, Record<any, (<T>(this, ...args) => T)>, QueryHelpers>

    Query helper functions.

    Type declaration

      read?: string

      Allows setting query#read options at the schema level, providing us a way to apply default ReadPreferences to all queries derived from a model.

      safe?: boolean | {
          j?: boolean;
          w?: string | number;
          wtimeout?: number;
      }

      defaults to true.

      Type declaration

      • Optional j?: boolean
      • Optional w?: string | number
      • Optional wtimeout?: number
      selectPopulatedPaths?: boolean

      By default, Mongoose will automatically select() any populated paths for you, unless you explicitly exclude them.

      Default

      true
      
      shardKey?: Record<string, unknown>

      The shardKey option is used when we have a sharded MongoDB architecture. Each sharded collection is given a shard key which must be present in all insert/update operations. We just need to set this schema option to the same shard key and we'll be all set.

      skipVersioning?: {
          [key: string]: boolean;
      }

      skipVersioning allows excluding paths from versioning (i.e., the internal revision will not be incremented even if these paths are updated). DO NOT do this unless you know what you're doing. For subdocuments, include this on the parent document using the fully qualified path.

      Type declaration

      • [key: string]: boolean
      statics?: IfEquals<TStaticMethods, {}, {
          [name: string]: ((this, ...args) => unknown);
      }, {
          [F in string | number | symbol]: TStaticMethods[F]
      }>

      Model Statics methods.

      Type declaration

        Type declaration

        • [name: string]: ((this, ...args) => unknown)
            • (this, ...args): unknown
            • Parameters

              Returns unknown

        storeSubdocValidationError?: boolean

        Validation errors in a single nested schema are reported both on the child and on the parent schema. Set storeSubdocValidationError to false on the child schema to make Mongoose only report the parent error.

        strict?: boolean | "throw"

        The strict option, (enabled by default), ensures that values passed to our model constructor that were not specified in our schema do not get saved to the db.

        strictQuery?: boolean | "throw"

        equal to strict by default, may be false, true, or 'throw'. Sets the default strictQuery mode for schemas.

        suppressReservedKeysWarning?: boolean

        Using save, isNew, and other Mongoose reserved names as schema path names now triggers a warning, not an error. You can suppress the warning by setting { suppressReservedKeysWarning: true } schema options. Keep in mind that this can break plugins that rely on these reserved names.

        The timeseries option to use when creating the model's collection.

        timestamps?: boolean | SchemaTimestampsConfig

        The timestamps option tells mongoose to assign createdAt and updatedAt fields to your schema. The type assigned is Date. By default, the names of the fields are createdAt and updatedAt. Customize the field names by setting timestamps.createdAt and timestamps.updatedAt.

        toJSON?: ToObjectOptions<THydratedDocumentType>

        Exactly the same as the toObject option but only applies when the document's toJSON method is called.

        toObject?: ToObjectOptions<THydratedDocumentType>

        Documents have a toObject method which converts the mongoose document into a plain JavaScript object. This method accepts a few options. Instead of applying these options on a per-document basis, we may declare the options at the schema level and have them applied to all of the schema's documents by default.

        typeKey?: string

        By default, if you have an object with key 'type' in your schema, mongoose will interpret it as a type declaration. However, for applications like geoJSON, the 'type' property is important. If you want to control which key mongoose uses to find type declarations, set the 'typeKey' schema option.

        validateBeforeSave?: boolean

        By default, documents are automatically validated before they are saved to the database. This is to prevent saving an invalid document. If you want to handle validation manually, and be able to save objects which don't pass validation, you can set validateBeforeSave to false.

        validateModifiedOnly?: boolean

        By default, validation will run on modified and required paths before saving to the database. You can choose to have Mongoose only validate modified paths by setting validateModifiedOnly to true.

        versionKey?: string | boolean

        The versionKey is a property set on each document when first created by Mongoose. This keys value contains the internal revision of the document. The versionKey option is a string that represents the path to use for versioning. The default is '__v'.

        Default

        '__v'
        
        virtuals?: SchemaOptionsVirtualsPropertyType<DocType, TVirtuals, TInstanceMethods>

        Virtual paths.

        writeConcern?: mongoose.mongo.WriteConcern

        Allows setting write concern at the schema level.

        Generated using TypeDoc