# Read and write data to MongoDB using Mongoose and Bun (/docs/guides/ecosystem/mongoose)

<!-- agent-signals: reading_time_min: 1 · est_tokens: 476 · updated: 2026-07-28 -->
Related: [Build an app with Astro and Bun](/docs/guides/ecosystem/astro.md), [Create a Discord bot](/docs/guides/ecosystem/discordjs.md), [Containerize a Bun application with Docker](/docs/guides/ecosystem/docker.md), [Use Drizzle ORM with Bun](/docs/guides/ecosystem/drizzle.md), [Use Gel with Bun](/docs/guides/ecosystem/gel.md), [Build an HTTP server using Elysia and Bun](/docs/guides/ecosystem/elysia.md)

MongoDB and Mongoose work with Bun with no extra configuration. This guide assumes you've already installed MongoDB and are running it as a background process or service on your development machine. See the [MongoDB installation guide](https://www.mongodb.com/docs/manual/installation/) for details.

***

Once MongoDB is running, create a directory and initialize it with `bun init`.

```sh terminal icon="terminal"
mkdir mongoose-app
cd mongoose-app
bun init
```

***

Then add Mongoose as a dependency.

```sh terminal icon="terminal"
bun add mongoose
```

***

In `schema.ts`, declare and export an `Animal` model.

```ts schema.ts icon="/icons/typescript.svg"
import * as mongoose from "mongoose";

const animalSchema = new mongoose.Schema(
  {
    title: { type: String, required: true },
    sound: { type: String, required: true },
  },
  {
    methods: {
      speak() {
        console.log(`${this.sound}!`);
      },
    },
  },
);

export type Animal = mongoose.InferSchemaType<typeof animalSchema>;
export const Animal = mongoose.model("Animal", animalSchema);
```

***

In `index.ts`, import `Animal`, connect to MongoDB, and add some data to the database.

```ts index.ts icon="/icons/typescript.svg"
import * as mongoose from "mongoose";
import { Animal } from "./schema";

// connect to database
await mongoose.connect("mongodb://127.0.0.1:27017/mongoose-app");

// create new Animal
const cow = new Animal({
  title: "Cow",
  sound: "Moo",
});
await cow.save(); // saves to the database

// read all Animals
const animals = await Animal.find();
animals[0].speak(); // logs "Moo!"

// disconnect
await mongoose.disconnect();
```

***

Run the file with `bun run`.

```bash terminal icon="terminal"
bun run index.ts
```

```txt
Moo!
```

***

As you build your application, refer to the official [MongoDB](https://www.mongodb.com/docs) and [Mongoose](https://mongoosejs.com/docs/) docs.
