# Mongoose > Elegant MongoDB object modeling for Node.js. **Overview** Mongoose provides schema-based modeling, validation, casting, middleware, query building, and API references for building MongoDB applications with Node.js. # Home Page - Description: Overview of Mongoose documentation, guides, API docs, and community resources. - URL: https://mongoosejs.com/ ## Getting Started - [Getting Started](https://mongoosejs.com/docs/index.md) - [Schemas](https://mongoosejs.com/docs/guides.md) ## Guides - [Schemas](https://mongoosejs.com/docs/guide.md) - [SchemaTypes](https://mongoosejs.com/docs/schematypes.md) - [Connecting to MongoDB](https://mongoosejs.com/docs/connections.md) - [Models](https://mongoosejs.com/docs/models.md) - [Documents](https://mongoosejs.com/docs/documents.md) - [SubDocuments](https://mongoosejs.com/docs/subdocs.md) - [Queries](https://mongoosejs.com/docs/queries.md) - [Validation](https://mongoosejs.com/docs/validation.md) - [Middleware](https://mongoosejs.com/docs/middleware.md) - [Query Population](https://mongoosejs.com/docs/populate.md) - [Discriminators](https://mongoosejs.com/docs/discriminators.md) - [Plugins](https://mongoosejs.com/docs/plugins.md) - [Mongoose Timestamps](https://mongoosejs.com/docs/timestamps.md) - [Transactions](https://mongoosejs.com/docs/transactions.md) - [Using TypeScript with Mongoose](https://mongoosejs.com/docs/typescript.md) ## API Reference - [Aggregate](https://mongoosejs.com/docs/api/aggregate.md) - [AggregationCursor](https://mongoosejs.com/docs/api/aggregationcursor.md) - [Array](https://mongoosejs.com/docs/api/array.md) - [ArraySubdocument](https://mongoosejs.com/docs/api/arraysubdocument.md) - [Buffer](https://mongoosejs.com/docs/api/buffer.md) - [Connection](https://mongoosejs.com/docs/api/connection.md) - [Decimal128](https://mongoosejs.com/docs/api/decimal128.md) - [Document](https://mongoosejs.com/docs/api/document.md) - [DocumentArray](https://mongoosejs.com/docs/api/documentarray.md) - [Error](https://mongoosejs.com/docs/api/error.md) - [Map](https://mongoosejs.com/docs/api/map.md) - [Model](https://mongoosejs.com/docs/api/model.md) - [Mongoose](https://mongoosejs.com/docs/api/mongoose.md) - [Query](https://mongoosejs.com/docs/api/query.md) - [QueryCursor](https://mongoosejs.com/docs/api/querycursor.md) - [Schema](https://mongoosejs.com/docs/api/schema.md) - [SchemaArray](https://mongoosejs.com/docs/api/schemaarray.md) - [SchemaArrayOptions](https://mongoosejs.com/docs/api/schemaarrayoptions.md) - [SchemaBoolean](https://mongoosejs.com/docs/api/schemaboolean.md) - [SchemaBuffer](https://mongoosejs.com/docs/api/schemabuffer.md) - [SchemaBufferOptions](https://mongoosejs.com/docs/api/schemabufferoptions.md) - [SchemaDateOptions](https://mongoosejs.com/docs/api/schemadateoptions.md) - [SchemaDocumentArray](https://mongoosejs.com/docs/api/schemadocumentarray.md) - [SchemaNumber](https://mongoosejs.com/docs/api/schemanumber.md) - [SchemaNumberOptions](https://mongoosejs.com/docs/api/schemanumberoptions.md) - [SchemaObjectId](https://mongoosejs.com/docs/api/schemaobjectid.md) - [SchemaObjectIdOptions](https://mongoosejs.com/docs/api/schemaobjectidoptions.md) - [SchemaString](https://mongoosejs.com/docs/api/schemastring.md) - [SchemaStringOptions](https://mongoosejs.com/docs/api/schemastringoptions.md) - [SchemaSubdocument](https://mongoosejs.com/docs/api/schemasubdocument.md) - [SchemaType](https://mongoosejs.com/docs/api/schematype.md) - [SchemaTypeOptions](https://mongoosejs.com/docs/api/schematypeoptions.md) - [SchemaUuid](https://mongoosejs.com/docs/api/schemauuid.md) - [Subdocument](https://mongoosejs.com/docs/api/subdocument.md) - [Uuid](https://mongoosejs.com/docs/api/uuid.md) - [VirtualType](https://mongoosejs.com/docs/api/virtualtype.md) ## Reference - [Migrating to Mongoose 9](https://mongoosejs.com/docs/migrating_to_9.md) - [MongoDB Version Compatibility](https://mongoosejs.com/docs/compatibility.md) - [Version Support](https://mongoosejs.com/docs/version-support.md) - [FAQ](https://mongoosejs.com/docs/faq.md) - [Further Reading](https://mongoosejs.com/docs/further_reading.md) ## Community - [Mongoose for Enterprise](https://mongoosejs.com/docs/enterprise.md) ## Tutorials - [Custom Casting](https://mongoosejs.com/docs/tutorials/custom-casting.md) - [Faster Mongoose Queries With Lean](https://mongoosejs.com/docs/tutorials/lean.md) - [Getters/Setters in Mongoose](https://mongoosejs.com/docs/tutorials/getters-setters.md) - [How to Use `findOneAndUpdate()` in Mongoose](https://mongoosejs.com/docs/tutorials/findoneandupdate.md) - [Mongoose Virtuals](https://mongoosejs.com/docs/tutorials/virtuals.md) - [Query Casting](https://mongoosejs.com/docs/tutorials/query_casting.md) - [TLS/SSL Connections](https://mongoosejs.com/docs/tutorials/ssl.md) - [Working With Dates](https://mongoosejs.com/docs/tutorials/dates.md) ## TypeScript - [Handling Subdocuments in TypeScript](https://mongoosejs.com/docs/typescript/subdocuments.md) - [Populate with TypeScript](https://mongoosejs.com/docs/typescript/populate.md) - [Queries in TypeScript](https://mongoosejs.com/docs/typescript/queries.md) - [Query Helpers in TypeScript](https://mongoosejs.com/docs/typescript/query-helpers.md) - [Schemas in TypeScript](https://mongoosejs.com/docs/typescript/schemas.md) - [Statics in TypeScript](https://mongoosejs.com/docs/typescript/statics-and-methods.md) - [Virtuals in TypeScript](https://mongoosejs.com/docs/typescript/virtuals.md) ## Additional Resources - [Advanced Schemas](https://mongoosejs.com/docs/advanced_schemas.md) - [Browser Library](https://mongoosejs.com/docs/browser.md) - [Custom Schema Types](https://mongoosejs.com/docs/customschematypes.md) - [Defaults](https://mongoosejs.com/docs/defaults.md) - [Deprecation Warnings](https://mongoosejs.com/docs/deprecations.md) - [Field Level Encryption](https://mongoosejs.com/docs/field-level-encryption.md) - [How to Check Your Mongoose Version](https://mongoosejs.com/docs/check-version.md) - [Known Incompatible npm Packages](https://mongoosejs.com/docs/incompatible_packages.md) - [Migrating to Mongoose 5](https://mongoosejs.com/docs/migrating_to_5.md) - [Migrating to Mongoose 6](https://mongoosejs.com/docs/migrating_to_6.md) - [Migrating to Mongoose 7](https://mongoosejs.com/docs/migrating_to_7.md) - [Migrating to Mongoose 8](https://mongoosejs.com/docs/migrating_to_8.md) - [Migration Guide](https://mongoosejs.com/docs/migration.md) - [MongoDB Change Streams in NodeJS with Mongoose](https://mongoosejs.com/docs/change-streams.md) - [Promises](https://mongoosejs.com/docs/promises.md) - [Sharing Schemas Between Mongoose Projects](https://mongoosejs.com/docs/shared-schemas.md) - [Testing Mongoose with Jest](https://mongoosejs.com/docs/jest.md) - [Using Async/Await with Mongoose](https://mongoosejs.com/docs/async-await.md) - [Using GeoJSON](https://mongoosejs.com/docs/geojson.md) - [Using Mongoose With AWS Lambda](https://mongoosejs.com/docs/lambda.md) - [Using Mongoose with Lodash](https://mongoosejs.com/docs/lodash.md) - [Using Mongoose With Next.js](https://mongoosejs.com/docs/nextjs.md)