In order start adding [collections and documents](/Databases/MongoDB/Introduction.md) to our database, we use Mongoose's **schema** structure. (This is specific to Mongoose and is not a structure that is a part of Mongo in general.)
We use a schema to define the shape of documents in a MongoDB collection. To do this we instantiate an instance of the Mongoose `Schema` class and set our properties:
data: { type: Date, default: Date.now }, // if unspecified, entry will default to current date
isPublished: Boolean,
});
```
> This is similar to declaring a type or interface in TypeScript
#### Available data types
The following data types are available:
-`String`
-`Number`
-`Boolean`
-`Array`
-`Date`
-`Buffer`
-`ObjectID` (for UUIDs)
> Note that we set our validation criteria as the second property for each schema value. There is more info info on validation in a [separate entry](/Databases/MongoDB/Validating_Mongoose_schemas.md);
## Models
Once we have established our schema we can then create a **model** of it. A model is basically a class representation of the interface we define in the schema: