Set Up Mongoose with MongoDB and NodeJS

Overview of Mongoose

Mongoose is an ODM (Object Data Modeling) library layered on top of the MongoDB driver. It provides a neat, streamlined way to work with MongoDB and supports easy object modeling in a NodeJS environment.

Prerequisites

Before you start, you should ideally:

  • Set up a non-root user with sudo permissions.
  • Make sure your server is fully updated.
  • Check that build-essential is installed. If it is missing, install it with:

$ sudo apt install build-essential

1. MongoDB

Install MongoDB.

$ sudo apt install mongodb

Confirm the installation is working. In the status output, you should see “active (running)”.

$ sudo systemctl status mongodb
Active: active (running)

2. NodeJS and NPM

Add the most recent stable NodeJS repository.

$ curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -

Install NodeJS.

Check that both NodeJS and NPM are installed correctly.

$ node -v && npm -v
v12.x.x
6.x.x

3. Initialize the Mongoose Project

Create the main directory for your project.

$ cd ~
$ mkdir mongooseProject && cd mongooseProject

Initialize a NodeJS development setup so that package.json is created automatically:

Answer the short setup questions based on your project needs. For example, if you just press return each time to accept defaults, npm init will respond with something like:

About to write to /root/mongooseProject/package.json:

{
"name": "mongooseproject",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}

From the project root, install the required packages with npm:

$ npm install --save mongoose

4. Define a Model

Create a folder named Models in the project root, then move into it:

$ cd ~/mongooseProject
$ mkdir Models && cd Models

Create connectDB.js. This file will include the connection logic for your MongoDB server.

Paste the following into connectDB.js.

const mongoose = require('mongoose'); // Import mongoose library

module.exports = function(uri) {
    mongoose.connect(uri, {  //attempt to connect to database
        useNewUrlParser: true, // Recommended, insures support for future MongoDB drivers
        useUnifiedTopology: true // Recommended, uses new MongoDB topology engine
    }).catch(error => console.log(error)) // Error handling


    mongoose.connection.on('connected', function () { // On connection
        console.log('Successful connection with database: ' + uri); // Callback for successful connection
    });
}

Create Users.js. This file will contain the model for the Users database collection.

Insert the following into Users.js to define a basic schema for users.

const mongoose = require("mongoose"); // Import mongoose library
const Schema = mongoose.Schema // Define Schema method

// Schema
var UsersSchema = new Schema({ // Create Schema
    name: String, // Name of user
    age: Number, // Age of user
    role: String // Role of user
})

// Model
var Users = mongoose.model("Users", UsersSchema) // Create collection model from schema
module.exports = Users // export model

5. Insert Documents into MongoDB

Create insertUser.js in the project’s root directory.

$ cd ~/mongooseProject
$ nano insertUser.js

Paste the following into insertUser.js. This script inserts documents into the Users collection.

//Library
const mongoose = require("mongoose")

// Database connection
const connectDB = require("./Models/connectDB")
var database = "mongoose" // Database name

// Models
const Users = require("./Models/Users")

// Connect to database
connectDB("mongodb://localhost:27017/"+database)

var insertedUser = new Users({ // Create new document
    name: "John Doe",
    age: 18,
    role: "Example User"
})

insertedUser.save(err => { // save document inside Users collection
    if(err) throw err // error handling
    console.log("Document inserted!")
    mongoose.disconnect() // disconnect connection from database once document is saved
})

Run insertUser.js.

$ node insertUser.js
Successful connection with database: mongodb://localhost:27017/mongoose
Document inserted!

6. Read Documents from MongoDB

Create readUsers.js in the root of the project.

$ cd ~/mongooseProject
$ nano readUsers.js

Add the following content to readUsers.js. This script reads documents from the Users collection.

//Library
const mongoose = require("mongoose")

// Database connection
const connectDB = require("./Models/connectDB")
var database = "mongoose" // Database name

// Models
const Users = require("./Models/Users")

// Connect to database
connectDB("mongodb://localhost:27017/"+database)

Users.find({}, (err, users)=>{ //find and return all documents inside Users collection
    if(err) throw err // error handling
    console.log(users)
    mongoose.disconnect()
})

Execute readUsers.js. The result will be an array of objects.

$ node readUsers.js
Successful connection with database: mongodb://localhost:27017/mongoose
[ { _id: ************************,
    name: 'John Doe',
    age: 18,
    role: 'Example User',
    __v: 0 } ]

Conclusion

You have set up Mongoose to work with MongoDB. For further details, consult the Mongoose API documentation.

Source: vultr.com

Create a Free Account

Register now and get access to our Cloud Services.

Posts you might be interested in:

Moderne Hosting Services mit Cloud Server, Managed Server und skalierbarem Cloud Hosting für professionelle IT-Infrastrukturen

LLM Fine-Tuning Data Preparation Guide

AI/ML, Tutorial
Vijona4 hours ago Preparing Data for LLM Fine-Tuning Fine-tuning a large language model (LLM) depends heavily on the quality of the training data. Clean, structured, and relevant datasets have a…