1.0.1 • Published 9 months ago

@wistle/mongo v1.0.1

Weekly downloads
-
License
MIT
Repository
-
Last release
9 months ago

@wistle/mongo

A MongoDB connection management package for the Wistle API service. This package provides a flexible way to manage multiple MongoDB connections, perform CRUD operations, and handle advanced MongoDB functionalities with ease.

Installation

To install the @wistle/mongo package, run:

npm install @wistle/mongo

Features

  • Multiple Database Connections: Manage multiple MongoDB connections based on different databases.
  • CRUD Operations: Perform standard CRUD operations with MongoDB.
  • Aggregation, Pagination, and More: Support for MongoDB aggregation, pagination, and other advanced queries.
  • Connection Management: Efficient management of MongoDB connections and automatic connection pooling.

Usage

Initialize Mongo Provider

First, you need to initialize the MongoProvider with your MongoDB configurations.

import { MongoProvider } from '@wistle/mongo';

// MongoDB configuration
const mongoDBConfig = {
  user: {
    url: 'mongodb://localhost:27017',
    dbName: 'wistleDB'
  }
};

// Initialize MongoProvider with multiple connections
await MongoProvider.addConnections(mongoDBConfig);

Using Mongo Service

Once the MongoProvider is initialized, you can use MongoService to perform MongoDB operations on a specific collection.

const mongoService = MongoProvider.getConnection('user');

// Example: Insert multiple users into the 'users' collection
const users = [
  { name: 'Alice', email: 'alice@example.com' },
  { name: 'Bob', email: 'bob@example.com' }
];
await mongoService.insertMany('users', users);

CRUD Operations

Insert Documents

const newUser = { name: 'Charlie', email: 'charlie@example.com' };
await mongoService.insertOne('users', newUser);

Find All Documents

const allUsers = await mongoService.find('users');
console.log(allUsers);

Find by ID

const userId = 'someObjectIdHere';
const user = await mongoService.findById('users', userId);
console.log(user);

Update Document by ID

const userId = 'someObjectIdHere';
await mongoService.updateById('users', userId, { $set: { email: 'new.email@example.com' } });

Delete Document by ID

const userId = 'someObjectIdHere';
await mongoService.deleteById('users', userId);

Aggregation

const aggregationPipeline = [
  { $match: { email: { $regex: /example.com$/ } } },
  { $group: { _id: null, total: { $sum: 1 } } }
];

const result = await mongoService.aggregate('users', aggregationPipeline);
console.log(result);

Pagination

const page = 1;
const limit = 10;
const users = await mongoService.paginate('users', {}, page, limit);
console.log(users);

Summery

With @wistle/mongo, managing multiple MongoDB connections, performing CRUD operations, and handling advanced functionalities like pagination and aggregation become simple and efficient. The package is designed to be flexible and extensible for your application’s needs.

1.0.1

9 months ago

1.0.0

9 months ago