NestJS Packages

nest-profiler-mongoose

Mongoose query collector for @eleven-labs/nest-profiler.

@eleven-labs/nest-profiler-mongoose

@eleven-labs/nest-profiler-mongoose captures every Mongoose query and aggregation executed during a profiled execution and displays them in a dedicated MongoDB panel.

MongoDB panel — Mongoose queries and aggregations with operation badge, collection, duration and result count

Installation

pnpm add @eleven-labs/nest-profiler-mongoose

Peer dependencies: mongoose ^8.0.0, @nestjs/mongoose ^11.0.0

Setup

reviews.module.ts
import { MongooseModule } from '@nestjs/mongoose';
import { MongooseCollectorModule } from '@eleven-labs/nest-profiler-mongoose';

@Module({
  imports: [
    MongooseModule.forFeature([{ name: Review.name, schema: ReviewSchema }]),
    MongooseCollectorModule.forRoot({
      slowQueryThreshold: 100, // ms — queries above this are highlighted (default: 100)
    }),
  ],
})
export class ReviewsModule {}

MongooseModule.forRoot() (or forRootAsync) must be registered in AppModule before using MongooseCollectorModule.

What it collects

For each Mongoose query or aggregation executed during a request:

FieldDescription
collectionMongoDB collection name (e.g. reviews)
operationMongoose operation (e.g. find, aggregate)
filterQuery filter object (if applicable)
durationExecution time in ms
isSlowtrue if duration ≥ slowQueryThreshold
startedAtUnix timestamp
countNumber of results returned (find queries only)
errorError message if the query failed

Slow queries are highlighted in red in the panel.

Toolbar badge

The toolbar badge shows: {n}q (e.g., 4q). When slow queries are present: 4q (1 slow).

How it works

At module initialization, the collector patches mongoose.Query.prototype.exec and mongoose.Aggregate.prototype.exec on the Mongoose instance retrieved from connection.base. This captures all queries regardless of when schemas were registered, and is fully transparent — Mongoose behavior is unchanged.

On this page