npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@hhnest/mongo-mingle

v1.0.7

Published

Mongo Mingle Module for NestJS

Readme

MongoMingle Module for NestJS

npm npm

Build hhnest/mongo-mingle Publish hhnest/mongo-mingle to NPM

What is MongoMingle?

MongoMingle is a NestJS module that simplifies MongoDB database migration management. Like Liquibase, it allows you to execute database update operations in a controlled and reproducible manner.

Key Features

  • Controlled Migrations : Sequential and traceable operation execution
  • Step Tracking : Each operation is recorded with its status
  • Security : Prevents multiple executions of the same operations
  • Performance : Uses RxJS for optimized asynchronous operations
  • NestJS Integration : Native module with dependency injection

Typical Use Cases

  • Data Initialization : Adding default values on first deployment
  • Schema Evolution : Adding, modifying, or removing fields
  • Data Migration : Transforming existing data
  • Configuration Updates : Modifying application parameters

Install @hhnest/mongo-mingle

You can use either the npm or yarn command-line tool to install the package.
Use whichever is appropriate for your project in the examples below.

NPM

# @hhnest/mongo-mingle
npm install @hhnest/mongo-mingle --save 

YARN

# @hhnest/mongo-mingle
yarn add @hhnest/mongo-mingle

Peer dependencies

| name | version | |---|---| | @nestjs/common | ^10.0.0 | | @nestjs/core | ^10.0.0 |

Dependencies

| name | version | |---|---| | mongodb | ^6.10.0 |

📦 Installation

NPM

npm install @hhnest/mongo-mingle --save 

YARN

yarn add @hhnest/mongo-mingle

🔧 Configuration

Import the MongoMingleModule in your AppModule and specify your MongoDB database URL:

import { Module } from '@nestjs/common';
import { MongoMingleModule } from '@hhnest/mongo-mingle';

@Module({
  imports: [
    MongoMingleModule.forRoot(
      'mongodb://localhost:27017/database',
      options?: MongoClientOptions
    ),
  ],
})
export class AppModule {}

Dependencies

Peer dependencies

| name | version | |---|---| | @nestjs/common | ^10.0.0 | | @nestjs/core | ^10.0.0 |

Dependencies

| name | version | |---|---| | mongodb | ^6.10.0 |

🚀 Usage

Operation Types

MongoMingle supports three types of operations:

  • INIT : Data initialization (executed only once)
  • STRUCT : Structure modification (adding/removing fields)
  • MIGRATE : Migration of existing data

Implementation Example

import { Injectable, Logger } from '@nestjs/common';
import { MongoMingle, OperationType } from '@hhnest/mongo-mingle';
import { Observable } from 'rxjs';

@Injectable()
export class MyService {
  constructor(
    private readonly logger: Logger,
    private readonly mongoMingle: MongoMingle,
  ) {}

  init(): Observable<void> {
    return this.mongoMingle.executeOperations([
      {collectionName: 'collectionTarget', operationStep: {name: 'init-default-values', operationType: OperationType.INIT, description: 'Add default values'}, operation$: this.#addDefaultValues()},
      {collectionName: 'collectionTarget', operationStep: {name: 'add-field', operationType: OperationType.STRUCT, description: 'Add field'}, operation$: this.#addField()},
      {collectionName: 'collectionTarget', operationStep: {name: 'rename-field', operationType: OperationType.MIGRATE, description: 'Rename field'}, operation$: this.#renameField()},
    ]);
  }
}

🔍 Operation Tracking

MongoMingle automatically records each operation in a mongo-mingle-operations collection with:

  • Operation name
  • Operation type
  • Description
  • Execution status
  • Execution date

This ensures that an operation is executed only once, even if the application restarts.