{"id":23944899,"url":"https://github.com/zeeshandev15/MongoDB-CRUD-Operations","last_synced_at":"2025-09-12T03:31:26.407Z","repository":{"id":270602473,"uuid":"910869682","full_name":"zeeshandev15/MongoDB-CRUD-Operations","owner":"zeeshandev15","description":"A Comprehensive Guide provides an in-depth overview of the four fundamental database operations—Create, Read, Update, and Delete. This guide covers syntax, best practices, and practical examples, enabling developers to efficiently manage and manipulate data in MongoDB, from basic commands to advanced techniques for scalable and robust applications.","archived":false,"fork":false,"pushed_at":"2025-01-30T17:52:38.000Z","size":309,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-24T06:31:02.036Z","etag":null,"topics":["expressjs","javascript","mongodb","nextjs","reacthookform","shadcn-ui","tailwindcss","zod-validation"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zeeshandev15.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-01T17:22:39.000Z","updated_at":"2025-02-08T12:35:50.000Z","dependencies_parsed_at":null,"dependency_job_id":"8907a8f2-d2ae-408e-85c7-884faba22259","html_url":"https://github.com/zeeshandev15/MongoDB-CRUD-Operations","commit_stats":null,"previous_names":["hi-dear-486/mongodb-crud-operations","zeeshan-develop/mongodb-crud-operations","zeeshandev15/mongodb-crud-operations"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/zeeshandev15/MongoDB-CRUD-Operations","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeeshandev15%2FMongoDB-CRUD-Operations","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeeshandev15%2FMongoDB-CRUD-Operations/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeeshandev15%2FMongoDB-CRUD-Operations/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeeshandev15%2FMongoDB-CRUD-Operations/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zeeshandev15","download_url":"https://codeload.github.com/zeeshandev15/MongoDB-CRUD-Operations/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeeshandev15%2FMongoDB-CRUD-Operations/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274748240,"owners_count":25341941,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-12T02:00:09.324Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["expressjs","javascript","mongodb","nextjs","reacthookform","shadcn-ui","tailwindcss","zod-validation"],"created_at":"2025-01-06T07:15:35.860Z","updated_at":"2025-09-12T03:31:26.392Z","avatar_url":"https://github.com/zeeshandev15.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cbr /\u003e\n    \u003ca href=\"https://youtu.be/lEflo_sc82g?feature=shared\" target=\"_blank\"\u003e\n      \u003cimg src=\"https://github.com/Hi-Dear-486/MongoDB-CRUD-Operations/blob/zeeshanBranch/mongodb-crud-operation.JPG\" alt=\"Project Banner\"\u003e\n    \u003c/a\u003e\n  \u003cbr /\u003e\n\n  \u003cdiv\u003e\n   \u003cimg\n  src=\"https://img.shields.io/badge/Next.js-0070F3?style=for-the-badge\u0026logo=next.js\u0026logoColor=white\"\n  alt=\"Next.js\"\n/\u003e\n    \u003cimg src=\"https://img.shields.io/badge/ShadCN-UI%20Components-red?style=for-the-badge\u0026logo=react\u0026logoColor=white\" alt=\"ShadCN\" /\u003e\n    \u003cimg src=\"https://img.shields.io/badge/-Tailwind_CSS-black?style=for-the-badge\u0026logoColor=white\u0026logo=tailwindcss\u0026color=06B6D4\" alt=\"tailwindcss\" /\u003e\n    \u003cimg src=\"https://img.shields.io/badge/React_Hook_Form-v7.44.2-blue?style=for-the-badge\u0026logo=reacthookform\u0026logoColor=white\" alt=\"React Hook Form\" /\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Zod-Type%20Validation-blue?style=for-the-badge\u0026logo=typescript\u0026logoColor=white\" alt=\"Zod\" /\u003e\n    \u003cimg src=\"https://img.shields.io/badge/AG%20Grid-Data%20Table-blue?style=for-the-badge\u0026logo=react\u0026logoColor=white\" alt=\"AG Grid\" /\u003e\n    \u003cimg src=\"https://img.shields.io/badge/-Express.js-lightgrey?style=for-the-badge\u0026logo=express\u0026logoColor=black\" alt=\"express\" /\u003e\n    \u003cimg src=\"https://img.shields.io/badge/-MongoDB-green?style=for-the-badge\u0026logo=mongodb\u0026logoColor=white\" alt=\"mongodb\" /\u003e\n\n  \u003c/div\u003e\n\n  \u003ch3 align=\"center\"\u003eMongoDB-CRUD-Operations\u003c/h3\u003e\n\u003c/div\u003e\n\n## 📋 \u003ca name=\"table\"\u003eTable of Contents\u003c/a\u003e\n\n1. 🤖 [Introduction](#introduction)\n2. ⚙️ [Tech Stack](#tech-stack)\n3. 🔋 [Features](#features)\n4. 🤸 [Quick Start](#quick-start)\n5. 🕸️ [Snippets (Code to Copy)](#snippets)\n6. 🔗 [Execution Plan](#links)\n7. 🚀 [More](#more)\n\n\n## \u003ca name=\"introduction\"\u003e🤖 Introduction\u003c/a\u003e\n\nA Comprehensive Guide provides an in-depth overview of the four fundamental database operations—Create, Read, Update, and Delete. This guide covers syntax, best practices, and practical examples, enabling developers to efficiently manage and manipulate data in MongoDB, from basic commands to advanced techniques for scalable and robust applications.\n\nIf you're getting started and need assistance or face any bugs, join our active Discord community with over **34k+** members. It's a place where people help each other out.\n\n\u003ca href=\"https://discord.com/invite/n6EdbFJ\" target=\"_blank\"\u003e\u003cimg src=\"https://github.com/sujatagunale/EasyRead/assets/151519281/618f4872-1e10-42da-8213-1d69e486d02e\" /\u003e\u003c/a\u003e\n\n## \u003ca name=\"tech-stack\"\u003e⚙️ Tech Stack\u003c/a\u003e\n\n- Next.js\n- react-hook-form\n- Zod\n- TailwindCSS\n- ShadCN\n- Express js\n- MongoDB\n\n## \u003ca name=\"features\"\u003e🔋 Features\u003c/a\u003e\n\n👉 **Full-Stack Application**: Next.js aur Express.js ke through frontend aur backend ka integration.\n\n👉 **Form Management**: React Hook Form aur Zod ke saath efficient aur validated data input.\n\n👉 **Dynamic UI**: TailwindCSS aur ShadCN se responsive aur modern design.\n\n👉 **Robust Data Table**: AG Grid ke saath powerful table operations.\n\n👉 **Scalable Database**: MongoDB ke saath large datasets ko handle karne ki capability.\n\n👉 **Validation \u0026 Security**: Zod aur middleware se secure aur reliable validation.\n\n👉 **Complete Responsiveness**: The application works seamlessly on all device types and screen sizes.\n\n👉 **Real-Time Functionality**: Fast API calls aur state updates for real-time experience.\n\nand many more, including code architecture and reusability\n\n## \u003ca name=\"quick-start\"\u003e🤸 Quick Start\u003c/a\u003e\n\nFollow these steps to set up the project locally on your machine.\n\n**Prerequisites**\n\nMake sure you have the following installed on your machine:\n\n- [Git](https://git-scm.com/)\n- [Node.js](https://nodejs.org/en)\n- Yarn (JavaScript Package Manager)\n\n**Cloning the Repository**\n\n```bash\ngit clone https://github.com/Hi-Dear-486/MongoDB-CRUD-Operations.git\ncd ./\n```\n\n**Installation**\n\nInstall the project dependencies using yarn:\n\n```bash\nyarn install\n```\n\n**Set Up Environment Variables**\n\nCreate a new file named `.env.local` in the root of your project and add the following content:\n\n```env\nMONGO_URI = Enter MONGO_URI\nPORT = Enter PORT\n```\n\n**Running the Project**\n\n```bash\nyarn  run dev\n```\n\nOpen [http://localhost:3000](http://localhost:3000) in your browser to view the project.\n\n## \u003ca name=\"snippets\"\u003e🕸️ Snippets\u003c/a\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ccode\u003etailwind.config.mjs\u003c/code\u003e\u003c/summary\u003e\n\n```javascript\n/** @type {import('tailwindcss').Config} */\n\nexport default {\n  darkMode: [\"class\"],\n  content: [\n    \"./pages/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./components/**/*.{js,ts,jsx,tsx,mdx}\",\n    \"./app/**/*.{js,ts,jsx,tsx,mdx}\",\n  ],\n  theme: {\n    extend: {\n      colors: {\n        background: \"hsl(var(--background))\",\n        foreground: \"hsl(var(--foreground))\",\n        card: {\n          DEFAULT: \"hsl(var(--card))\",\n          foreground: \"hsl(var(--card-foreground))\",\n        },\n        popover: {\n          DEFAULT: \"hsl(var(--popover))\",\n          foreground: \"hsl(var(--popover-foreground))\",\n        },\n        primary: {\n          DEFAULT: \"hsl(var(--primary))\",\n          foreground: \"hsl(var(--primary-foreground))\",\n        },\n        secondary: {\n          DEFAULT: \"hsl(var(--secondary))\",\n          foreground: \"hsl(var(--secondary-foreground))\",\n        },\n        muted: {\n          DEFAULT: \"hsl(var(--muted))\",\n          foreground: \"hsl(var(--muted-foreground))\",\n        },\n        accent: {\n          DEFAULT: \"hsl(var(--accent))\",\n          foreground: \"hsl(var(--accent-foreground))\",\n        },\n        destructive: {\n          DEFAULT: \"hsl(var(--destructive))\",\n          foreground: \"hsl(var(--destructive-foreground))\",\n        },\n        border: \"hsl(var(--border))\",\n        input: \"hsl(var(--input))\",\n        ring: \"hsl(var(--ring))\",\n        chart: {\n          1: \"hsl(var(--chart-1))\",\n          2: \"hsl(var(--chart-2))\",\n          3: \"hsl(var(--chart-3))\",\n          4: \"hsl(var(--chart-4))\",\n          5: \"hsl(var(--chart-5))\",\n        },\n      },\n      boxShadow: {\n        62: \"rgb(204, 219, 232) 3px 3px 6px 0px inset, rgba(255, 255, 255, 0.5) -3px -3px 6px 1px inset\",\n      },\n      borderRadius: {\n        lg: \"var(--radius)\",\n        md: \"calc(var(--radius) - 2px)\",\n        sm: \"calc(var(--radius) - 4px)\",\n      },\n    },\n  },\n  plugins: [require(\"tailwindcss-animate\")],\n};\n\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ccode\u003eapp/globals.css\u003c/code\u003e\u003c/summary\u003e\n\n```css\n@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\nbody {\n  font-family: Arial, Helvetica, sans-serif;\n}\n\n@layer base {\n  :root {\n    --background: 0 0% 100%;\n    --foreground: 240 10% 3.9%;\n    --card: 0 0% 100%;\n    --card-foreground: 240 10% 3.9%;\n    --popover: 0 0% 100%;\n    --popover-foreground: 240 10% 3.9%;\n    --primary: 240 5.9% 10%;\n    --primary-foreground: 0 0% 98%;\n    --secondary: 240 4.8% 95.9%;\n    --secondary-foreground: 240 5.9% 10%;\n    --muted: 240 4.8% 95.9%;\n    --muted-foreground: 240 3.8% 46.1%;\n    --accent: 240 4.8% 95.9%;\n    --accent-foreground: 240 5.9% 10%;\n    --destructive: 0 84.2% 60.2%;\n    --destructive-foreground: 0 0% 98%;\n    --border: 240 5.9% 90%;\n    --input: 240 5.9% 90%;\n    --ring: 240 10% 3.9%;\n    --chart-1: 12 76% 61%;\n    --chart-2: 173 58% 39%;\n    --chart-3: 197 37% 24%;\n    --chart-4: 43 74% 66%;\n    --chart-5: 27 87% 67%;\n    --radius: 0.5rem;\n  }\n  .dark {\n    --background: 240 10% 3.9%;\n    --foreground: 0 0% 98%;\n    --card: 240 10% 3.9%;\n    --card-foreground: 0 0% 98%;\n    --popover: 240 10% 3.9%;\n    --popover-foreground: 0 0% 98%;\n    --primary: 0 0% 98%;\n    --primary-foreground: 240 5.9% 10%;\n    --secondary: 240 3.7% 15.9%;\n    --secondary-foreground: 0 0% 98%;\n    --muted: 240 3.7% 15.9%;\n    --muted-foreground: 240 5% 64.9%;\n    --accent: 240 3.7% 15.9%;\n    --accent-foreground: 0 0% 98%;\n    --destructive: 0 62.8% 30.6%;\n    --destructive-foreground: 0 0% 98%;\n    --border: 240 3.7% 15.9%;\n    --input: 240 3.7% 15.9%;\n    --ring: 240 4.9% 83.9%;\n    --chart-1: 220 70% 50%;\n    --chart-2: 160 60% 45%;\n    --chart-3: 30 80% 55%;\n    --chart-4: 280 65% 60%;\n    --chart-5: 340 75% 55%;\n  }\n}\n\n@layer base {\n  * {\n    @apply border-border;\n  }\n  body {\n    @apply bg-background text-foreground;\n  }\n}\n\n.gray {\n  background-color: rgb(92, 98, 100);\n}\n\n.ag-header-cell-filter-button {\n  background-color: white !important;\n  color: gray !important;\n  border-radius: 5px !important;\n  padding: 5px 10px;\n  cursor: pointer;\n  border: 4px solid white;\n}\n\n.ag-header-cell-filter-button:hover {\n  background-color: white !important;\n}\n\n```\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\u003ccode\u003elib/utils.js\u003c/code\u003e\u003c/summary\u003e\n\n```typescript\nimport { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n  return twMerge(clsx(inputs));\n}\n\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ccode\u003elib/schemas/registraionSchema.js\u003c/code\u003e\u003c/summary\u003e\n\n```javascript\nimport { z } from \"zod\";\n\nexport const formSchema = z.object({\n  name: z.string().min(2, {\n    message: \"Username must be at least 2 characters.\",\n  }),\n  email: z.string().email({ message: \"Invalid email address.\" }),\n  password: z\n    .string()\n    .regex(\n      /^(?=.*[A-Z])(?=.*[a-z])(?=.*\\d)(?=.*[!@#$%^\u0026*(),.?\":{}|\u003c\u003e]).{8,}$/,\n      {\n        message:\n          \"Password must be at least 8 characters long and include an uppercase letter, a lowercase letter, a number, and a special character.\",\n      }\n    ),\n  phone: z.string().regex(/^\\+?[1-9]\\d{1,14}$/, {\n    message: \"Phone number must be a valid international format.\",\n  }),\n  dob: z.date({\n    required_error: \"A date of birth is required.\",\n  }),\n  gender: z\n    .string()\n    .refine((val) =\u003e [\"male\", \"female\", \"other\"].includes(val), {\n      message: \"You need to select a notification type.\",\n    }),\n});\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ccode\u003elib/constants\u003c/code\u003e\u003c/summary\u003e\n\n```javascript\nexport const RADIO_OPTIONS = [\n  { value: \"male\", label: \"Male\" },\n  { value: \"female\", label: \"Female\" },\n  { value: \"other\", label: \"Other\" },\n];\n\n// Column definitions\nexport const colDefs = [\n  {\n    field: \"name\",\n    flex: 1,\n    headerName: \"Name\",\n    filter: true,\n    floatingFilter: true,\n    checkboxSelection: true,\n  },\n  {\n    field: \"email\",\n    flex: 1,\n    headerName: \"Email\",\n    filter: true,\n    floatingFilter: true,\n  },\n  {\n    field: \"phone\",\n    flex: 1,\n    headerName: \"Phone Number\",\n    filter: true,\n    floatingFilter: true,\n    cellClassRules: {\n      // apply green to electric cars\n      \"rag-green\": (params) =\u003e params.value === \"923497849159\",\n    },\n  },\n  {\n    field: \"dob\",\n    flex: 1,\n    headerName: \"Date of Birth\",\n    floatingFilter: true,\n    valueFormatter: (item) =\u003e new Date(item.value).toLocaleDateString(),\n  },\n  {\n    field: \"gender\",\n    flex: 1,\n    headerName: \"Gender\",\n    filter: true,\n    floatingFilter: true,\n  },\n];\n\n```\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\u003ccode\u003eExecution Plan\u003c/code\u003e\u003c/summary\u003e\n\n```javascript\nImplementation Steps:\n1 Initialize Project:\n  Create a new Node.js project:\n  npx create-next-app@latest ./\n\n2 Install required dependencies:\nyarn  add express mongoose\nyarn add nodemon --dev\n\n3 Project Setup:\n🕸 Setup basic Express server.\n🕸 Configure environment variables using .env file.\n\n4 Connect to MongoDB:\n🕸 Use mongoose.connect() to establish a connection with MongoDB.\n\n5 Define Models:\n🕸 Create a schema for the data you want to handle (e.g., users, posts, products).\n🕸 Use Mongoose to define models.\n\n😞 Its my mistake i am not using api/\n😔 i am directly use resource\n\n6 Implement Routes:\n🕸 Create RESTful routes for each CRUD operation:\n🕸 Create: POST /api/resource\n🕸 Read: GET /api/resource, GET /api/resource/:id\n🕸 Update: PUT /api/resource/:id\n🕸 Delete: DELETE /api/resource/:id\n\n7 Controllers:\n🕸 Create controller functions to handle the business logic for each route\n\n8 Test Endpoints:\n🕸 Use tools like Postman or Thunder Client to test your API endpoints\n\n9 Error Handling:\n🕸 Implement proper error handling and validation for incoming data.\n\n10 Run Server:\n🕸 Use nodemon for development to restart the server automatically\n```\n\u003c/details\u003e\n\n## \u003ca name=\"more\"\u003e🚀 More\u003c/a\u003e\n\n**Advance your skills with Next.js 14**\n\nEnjoyed creating this project? Dive deeper  for a richer learning adventure. They're packed with detailed explanations, cool features, and exercises to boost your skills. Give it a go!\n\n\u003ca href=\"https://github.com/Hi-Dear-486/Movie-flix-App\" target=\"_blank\"\u003e\n\u003cimg src=\"https://github.com/Hi-Dear-486/Movie-flix-App/blob/master/movie.JPG\" alt=\"Project Banner\"\u003e\n\u003c/a\u003e\n\n\u003cbr /\u003e\n\u003cbr /\u003e\n\n#\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzeeshandev15%2FMongoDB-CRUD-Operations","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzeeshandev15%2FMongoDB-CRUD-Operations","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzeeshandev15%2FMongoDB-CRUD-Operations/lists"}