Build an inventory system

Build an inventory system

An inventory document combines identity, category, price and stock. Change quantities with update operators, check filters before deletion and inspect results after each operation.

This mini-project demonstrates how to build a basic Inventory Management System using MongoDB via the shell. You'll simulate real-life inventory operations such as adding products, updating stock, viewing details, and querying products based on conditions.

Before working through the examples, make sure you can connect with mongosh and select your database. Use a practice database for writes and deletions.

  1. By the end of this lesson

    Create products, filter inventory and update stock without changing unrelated fields.

Project Overview

  • Add new items to inventory
  • View all items
  • Search by category or price
  • Update item stock
  • Remove items from inventory

Real-life scenario: Think of a small electronics store tracking its items. Each product has a name, category, price, quantity, and brand.

Step 1: Create the Database and Collection


    use inventoryDB
    db.createCollection("products")
    { "ok" : 1 }

We now have a database called inventoryDB and a collection called products.

Step 2: Insert Products into Inventory


    db.products.insertMany([
      {
        name: "Wireless Mouse",
        category: "Accessories",
        brand: "Logitech",
        price: 1200,
        quantity: 50
      },
      {
        name: "USB-C Charger",
        category: "Chargers",
        brand: "Anker",
        price: 1500,
        quantity: 30
      },
      {
        name: "Gaming Keyboard",
        category: "Accessories",
        brand: "Corsair",
        price: 3500,
        quantity: 20
      }
    ])
    {
      acknowledged: true,
      insertedIds: { "0": ObjectId("..."), "1": ObjectId("..."), "2": ObjectId("...") }
    }

We’ve now added 3 products with relevant details to our inventory.

Step 3: View All Inventory Items


    db.products.find().pretty()
    {
      "_id" : ObjectId("..."),
      "name" : "Wireless Mouse",
      "category" : "Accessories",
      "brand" : "Logitech",
      "price" : 1200,
      "quantity" : 50
    }
    ...

Question: How can you filter products that are priced below ₹2000?

Answer: You can use the $lt (less than) operator in your query.


    db.products.find({ price: { $lt: 2000 } }).pretty()
    {
      "name": "Wireless Mouse",
      "price": 1200,
      ...
    },
    {
      "name": "USB-C Charger",
      "price": 1500,
      ...
    }

Step 4: Update Stock Quantity

Suppose 5 Gaming Keyboards were sold. Let’s reduce the quantity:


    db.products.updateOne(
      { name: "Gaming Keyboard" },
      { $inc: { quantity: -5 } }
    )
    { "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }

Explanation: The $inc operator decreases the quantity by 5 units.

Step 5: Find All Products in a Category


    db.products.find({ category: "Accessories" }).pretty()

This helps you list all accessories in the store inventory.

Step 6: Delete an Item

If a product is discontinued or out of stock permanently, you can delete it:


    db.products.deleteOne({ name: "USB-C Charger" })
    { "acknowledged" : true, "deletedCount" : 1 }

Intuition Check: What if you mistakenly deleted an item?

Answer: Unless you have backups or logging, MongoDB won't undo deletes. That's why backups and careful deletion logic are important in production systems.

Check your understanding

A product has stock: 10. Two independent sales each need to subtract one. Which update expresses a decrement on the stored value?
Choose one answer. You can try again.

Answer and explanation

Use $inc: { stock: -1 } for each sale.

$inc applies a relative change to the current stored value. Preventing negative stock also requires an appropriate filter or other business checks.

What to remember

An inventory document combines identity, category, price and stock. Change quantities with update operators, check filters before deletion and inspect results after each operation.

Wrap Up

You've now built a fully functional console-based inventory system using MongoDB shell. You've learned how to:

  • Insert and structure product documents
  • Query using filters and operators
  • Update stock dynamically
  • Delete items from inventory

This project is a great foundation to expand into a full web-based inventory app using Node.js, Express, and MongoDB.

Reaching the recap and completing the quizzes are separate milestones.

    Course overview →