<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Milan K Jain</title>
    <description>The latest articles on DEV Community by Milan K Jain (@milankj).</description>
    <link>https://dev.to/milankj</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3882922%2Fe7d44e0c-94ef-4696-82a8-f98a37b06c02.jpg</url>
      <title>DEV Community: Milan K Jain</title>
      <link>https://dev.to/milankj</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/milankj"/>
    <language>en</language>
    <item>
      <title>Building AppForge: A Unified Project Scaffolding CLI for Modern Development</title>
      <dc:creator>Milan K Jain</dc:creator>
      <pubDate>Tue, 02 Jun 2026 11:36:09 +0000</pubDate>
      <link>https://dev.to/milankj/building-appforge-a-unified-project-scaffolding-cli-for-modern-development-2k3m</link>
      <guid>https://dev.to/milankj/building-appforge-a-unified-project-scaffolding-cli-for-modern-development-2k3m</guid>
      <description>&lt;p&gt;As developers, we've become accustomed to powerful tooling that helps us get started quickly.&lt;/p&gt;

&lt;p&gt;If you've worked with React, you've probably used Create React App in the past or Vite today. Angular provides its own CLI that can generate an entire application with a single command. These tools remove the repetitive work of creating folders, configuring build tools, installing dependencies, and setting up project structures.&lt;/p&gt;

&lt;p&gt;However, while working on backend projects, I noticed something interesting.&lt;/p&gt;

&lt;p&gt;Although there are excellent framework-specific tools such as Express Generator, Nest CLI, and Fastify CLI, I often found myself switching between different tools depending on the project I was building. Each framework had its own setup process, structure, and commands.&lt;/p&gt;

&lt;p&gt;That observation led me to a simple question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What if there was a single CLI that could scaffold projects across different technologies while providing a consistent developer experience?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That idea became AppForge.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;Starting a new project often involves repeating the same setup tasks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Creating a project structure&lt;/li&gt;
&lt;li&gt;Installing dependencies&lt;/li&gt;
&lt;li&gt;Configuring TypeScript&lt;/li&gt;
&lt;li&gt;Creating scripts in package.json&lt;/li&gt;
&lt;li&gt;Setting up Express&lt;/li&gt;
&lt;li&gt;Configuring development environments&lt;/li&gt;
&lt;li&gt;Creating boilerplate files&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These tasks aren't difficult, but they are repetitive.&lt;/p&gt;

&lt;p&gt;Even with existing framework generators, developers often need to remember different commands for different technologies.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm create vite@latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nest new my-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx express-generator
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each tool solves a specific problem, but there isn't always a unified workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introducing AppForge
&lt;/h2&gt;

&lt;p&gt;AppForge is a project scaffolding CLI designed to simplify project creation through a single interface.&lt;/p&gt;

&lt;p&gt;The current version focuses on Node.js applications using Express.&lt;/p&gt;

&lt;p&gt;Features include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Interactive command-line experience&lt;/li&gt;
&lt;li&gt;Node.js project generation&lt;/li&gt;
&lt;li&gt;JavaScript support&lt;/li&gt;
&lt;li&gt;TypeScript support&lt;/li&gt;
&lt;li&gt;Automatic dependency installation&lt;/li&gt;
&lt;li&gt;Ready-to-run Express application&lt;/li&gt;
&lt;li&gt;Standardized project structure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Using AppForge is straightforward:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx @milankj/appforge
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The CLI then guides you through a few simple prompts:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Application Name: my-api
Application Type: Node
Language: TypeScript
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once complete, the project is generated, dependencies are installed, and the application is ready to run.&lt;/p&gt;

&lt;h2&gt;
  
  
  Under the Hood
&lt;/h2&gt;

&lt;p&gt;AppForge is built using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Node.js&lt;/li&gt;
&lt;li&gt;TypeScript&lt;/li&gt;
&lt;li&gt;Inquirer&lt;/li&gt;
&lt;li&gt;fs-extra&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The CLI works by selecting a predefined template, copying it into a new project directory, updating project-specific values, and installing dependencies automatically.&lt;/p&gt;

&lt;p&gt;The current structure follows a template-based approach:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;templates/
└── node/
    ├── javascript/
    └── typescript/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This architecture makes it easy to add new templates and technologies in future releases.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;p&gt;Building AppForge turned out to be a valuable learning experience.&lt;/p&gt;

&lt;p&gt;Some of the topics I explored included:&lt;/p&gt;

&lt;h3&gt;
  
  
  Node.js CLI Development
&lt;/h3&gt;

&lt;p&gt;Learning how npm packages expose executable commands through the &lt;code&gt;bin&lt;/code&gt; field and how global CLI tools work.&lt;/p&gt;

&lt;h3&gt;
  
  
  ESM and Modern TypeScript
&lt;/h3&gt;

&lt;p&gt;Working with modern Node.js module systems, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ES Modules&lt;/li&gt;
&lt;li&gt;NodeNext&lt;/li&gt;
&lt;li&gt;Import resolution&lt;/li&gt;
&lt;li&gt;Runtime compatibility&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  npm Package Publishing
&lt;/h3&gt;

&lt;p&gt;Publishing a package involves more than simply running &lt;code&gt;npm publish&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;I gained hands-on experience with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Package versioning&lt;/li&gt;
&lt;li&gt;Dependency management&lt;/li&gt;
&lt;li&gt;Scoped packages&lt;/li&gt;
&lt;li&gt;npm distribution&lt;/li&gt;
&lt;li&gt;CLI packaging&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Project Scaffolding Patterns
&lt;/h3&gt;

&lt;p&gt;I also learned how many popular tools approach project generation using templates and file generation strategies.&lt;/p&gt;

&lt;h2&gt;
  
  
  Future Plans
&lt;/h2&gt;

&lt;p&gt;The current version is only the beginning.&lt;/p&gt;

&lt;p&gt;Planned improvements include:&lt;/p&gt;

&lt;h3&gt;
  
  
  Additional Backend Frameworks
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Fastify&lt;/li&gt;
&lt;li&gt;NestJS&lt;/li&gt;
&lt;li&gt;Additional API templates&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Frontend Support
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;React&lt;/li&gt;
&lt;li&gt;Angular&lt;/li&gt;
&lt;li&gt;Additional frontend frameworks&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Advanced Configuration
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Database selection&lt;/li&gt;
&lt;li&gt;Authentication templates&lt;/li&gt;
&lt;li&gt;Docker support&lt;/li&gt;
&lt;li&gt;Environment configuration&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Template Versioning
&lt;/h3&gt;

&lt;p&gt;Maintaining templates through proper versioning and update strategies to ensure generated projects stay current.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Open Source Developer Tools Matter
&lt;/h2&gt;

&lt;p&gt;One of the things I enjoy most about software development is building tools that improve developer productivity.&lt;/p&gt;

&lt;p&gt;Many of the frameworks and libraries we use every day exist because someone identified a repetitive problem and decided to automate it.&lt;/p&gt;

&lt;p&gt;AppForge is a small step in that direction.&lt;/p&gt;

&lt;p&gt;While the current version is focused on Node.js and Express, the long-term goal is to create a flexible and extensible project generation platform that provides a consistent experience regardless of the technology stack being used.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try AppForge
&lt;/h2&gt;

&lt;p&gt;You can install and run AppForge directly from npm:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx appforge-toolkit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;npm package:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.npmjs.com/package/appforge-toolkit" rel="noopener noreferrer"&gt;NPM Package Link&lt;/a&gt;&lt;br&gt;
Feedback, ideas, and feature suggestions are always welcome.&lt;/p&gt;

&lt;p&gt;Building tools for developers is one of the best ways to learn, and AppForge has already taught me a great deal about Node.js, TypeScript, package publishing, and developer tooling. I'm excited to continue improving it and expanding its capabilities in future releases.&lt;/p&gt;

</description>
      <category>cli</category>
      <category>javascript</category>
      <category>showdev</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Simulating IoT Devices Without Physical Hardware 🚀</title>
      <dc:creator>Milan K Jain</dc:creator>
      <pubDate>Sun, 03 May 2026 07:47:47 +0000</pubDate>
      <link>https://dev.to/milankj/simulating-iot-devices-without-physical-hardware-29dk</link>
      <guid>https://dev.to/milankj/simulating-iot-devices-without-physical-hardware-29dk</guid>
      <description>&lt;p&gt;One of the recurring challenges while building IoT systems is testing device communication, telemetry handling, MQTT flows, and event-driven architectures without constantly relying on physical hardware. To solve this problem, I recently started building a lightweight IoT Simulator CLI focused on helping developers simulate virtual devices directly from the terminal.&lt;/p&gt;

&lt;p&gt;The project is designed for developers working on IoT platforms, MQTT brokers, RabbitMQ pipelines, telemetry ingestion systems, automation workflows, and real-time event processing. Instead of manually mocking payloads or depending on real devices during development, the simulator allows virtual devices to behave like actual connected hardware with configurable telemetry, topics, and runtime interactions.&lt;/p&gt;

&lt;p&gt;The current version focuses on providing a simple but flexible developer experience with config-driven device simulation and MQTT communication support. The goal is to make local IoT testing faster, easier, and more scalable while keeping the simulator lightweight and developer-friendly.&lt;/p&gt;

&lt;p&gt;This is still the first version, but there’s a lot planned ahead — including more advanced payload generators, richer simulation controls, better orchestration capabilities, and expanded protocol support.&lt;/p&gt;

&lt;p&gt;📦 npm Package: &lt;a href="https://www.npmjs.com/package/iot-simulator-cli" rel="noopener noreferrer"&gt;PACKAGE LINK&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Would love feedback from developers working with IoT systems, MQTT infrastructure, or event-driven architectures.&lt;/p&gt;

</description>
      <category>cli</category>
      <category>iot</category>
      <category>testing</category>
      <category>tooling</category>
    </item>
    <item>
      <title>🚀 Fixing MongoDB Updates in n8n (No More Workarounds!)</title>
      <dc:creator>Milan K Jain</dc:creator>
      <pubDate>Thu, 16 Apr 2026 17:23:18 +0000</pubDate>
      <link>https://dev.to/milankj/fixing-mongodb-updates-in-n8n-no-more-workarounds-4l44</link>
      <guid>https://dev.to/milankj/fixing-mongodb-updates-in-n8n-no-more-workarounds-4l44</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;If you've ever used MongoDB with n8n, you've probably hit this limitation.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The MongoDB node in n8n doesn’t actually support real MongoDB update operations.&lt;/p&gt;

&lt;p&gt;Yeah… that surprised me too.&lt;/p&gt;




&lt;h2&gt;
  
  
  😤 The Problem
&lt;/h2&gt;

&lt;p&gt;The existing update functionality is extremely limited:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Only allows updating a &lt;strong&gt;single field&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Uses &lt;code&gt;updateKey&lt;/code&gt; + value&lt;/li&gt;
&lt;li&gt;Internally tied to &lt;code&gt;updateOne&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That means &lt;strong&gt;no support for native MongoDB update operators like:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;$set&lt;/code&gt; (multiple fields)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;$pull&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;$push&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;$rename&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;$inc&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🤯 Real-world limitation
&lt;/h2&gt;

&lt;p&gt;Let’s say you want to remove a value from an array:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"$pull"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"tags"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"deprecated"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;👉 Not possible in the current node.&lt;/p&gt;

&lt;p&gt;Or update multiple fields:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"$set"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"active"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"updatedAt"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-01-01"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🧠 The Workarounds (that shouldn’t exist)&lt;/p&gt;

&lt;p&gt;Because of this, developers are forced to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use aggregation pipelines 😬&lt;/li&gt;
&lt;li&gt;Add Code nodes 🤯&lt;/li&gt;
&lt;li&gt;Chain multiple operations 😵
This defeats the purpose of using a low-code tool like n8n.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  💡 The Fix
&lt;/h2&gt;

&lt;p&gt;I created a PR that enables JSON-based update operations in the MongoDB node.&lt;/p&gt;

&lt;p&gt;✅ What’s new?&lt;/p&gt;

&lt;p&gt;You can now define:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A JSON filter&lt;/li&gt;
&lt;li&gt;A JSON update object
👉 Just like native MongoDB.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🔥 Before vs After
&lt;/h2&gt;

&lt;p&gt;❌ Before&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One field update only&lt;/li&gt;
&lt;li&gt;No operators&lt;/li&gt;
&lt;li&gt;Limited flexibility&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;✅ After (JSON Mode)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"filter"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"userId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"123"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"update"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"$set"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"active"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"$inc"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"loginCount"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;👉 Clean&lt;br&gt;
👉 Flexible&lt;br&gt;
👉 Powerful&lt;/p&gt;

&lt;p&gt;🛠️ What this unlocks&lt;/p&gt;

&lt;p&gt;This change enables:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Updating multiple fields in one operation.&lt;/li&gt;
&lt;li&gt;Using advanced operators like $pull, $push, $rename.&lt;/li&gt;
&lt;li&gt;Writing cleaner workflows.&lt;/li&gt;
&lt;li&gt;Removing unnecessary Code nodes.&lt;/li&gt;
&lt;li&gt;Aligning with native MongoDB behavior.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;⚙️ How it works&lt;/p&gt;

&lt;p&gt;A new mode is introduced:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Simple Mode (existing)&lt;/li&gt;
&lt;li&gt;Uses updateKey&lt;/li&gt;
&lt;li&gt;No changes&lt;/li&gt;
&lt;li&gt;JSON Mode (new)
Accepts raw JSON:&lt;/li&gt;
&lt;li&gt;Filter&lt;/li&gt;
&lt;li&gt;Update object
👉 Fully opt-in
👉 No breaking changes&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;🧪 Stability&lt;br&gt;
✅ Backward compatible&lt;br&gt;
✅ Input validation (invalid / empty JSON)&lt;br&gt;
✅ Unit tests added&lt;br&gt;
✅ All existing tests passing&lt;br&gt;
🎯 Why this matters&lt;/p&gt;

&lt;p&gt;n8n is powerful because it bridges the gap between code and no-code.&lt;/p&gt;

&lt;p&gt;But limitations like this push developers back into writing code — unnecessarily.&lt;/p&gt;

&lt;p&gt;This change:&lt;/p&gt;

&lt;p&gt;✔ Reduces friction&lt;br&gt;
✔ Improves flexibility&lt;br&gt;
✔ Matches real MongoDB capabilities&lt;br&gt;
✔ Saves time for developers&lt;/p&gt;

&lt;p&gt;🚀 PR Link&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://github.com/n8n-io/n8n/pull/27583" rel="noopener noreferrer"&gt;https://github.com/n8n-io/n8n/pull/27583&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Would love feedback from the community and maintainers!&lt;/p&gt;

&lt;p&gt;💬 Final thought&lt;/p&gt;

&lt;p&gt;Sometimes the most impactful improvements aren’t flashy…&lt;/p&gt;

&lt;p&gt;They’re the ones that remove everyday friction.&lt;/p&gt;

&lt;p&gt;This is one of them.&lt;/p&gt;

</description>
      <category>n8n</category>
      <category>mongodb</category>
      <category>mongodbnode</category>
    </item>
  </channel>
</rss>
