If tutorials available on this website are helpful for you, please whitelist this website in your ad blocker😭 or Donate to help us ❤️ pay for the web hosting to keep the website running.
Raw MongoDB queries वो queries होती हैं जो direct MongoDB के native query language में लिखी जाती हैं, बिना किसी ORM (जैसे Mongoose) के abstraction के। यह queries MongoDB Node.js driver के साथ execute होती हैं, और आपको complete control देती हैं कि आप database से कैसे interact करते हैं।
Raw queries का use करना useful होता है जब -
आपको complex aggregations लिखनी हों।
आपको ORM कि performance bottlenecks से बचना हो।
आपको fine-grained control चाहिए over MongoDB operations.
आप raw queries का use तब कर सकते हैं जब -
ORM के through आपकी query inefficient हो रही हो।
आपको native MongoDB features का use करना हो जो ORM support नहीं करता।
आपको queries को fine-tune करना हो performance के लिए।
●●●
NestJS में Mongoose का use करते हुए भी आप MongoDB driver के native methods को access कर सकते हैं। आप Mongoose connection से db.collection()
method के through raw queries को run कर सकते हैं।
File : src/user/user.service.ts
import { Injectable } from '@nestjs/common';
import { InjectConnection } from '@nestjs/mongoose';
import { Connection } from 'mongoose';
@Injectable()
export class UserService {
constructor(@InjectConnection() private readonly connection: Connection) {}
// Raw query to find users
async findUsersRaw(): Promise<any> {
const users = await this.connection.db.collection('users').find({}).toArray();
return users;
}
}
यहां
this.connection.db.collection('users')
का use करके हम direct MongoDB के users collection को access कर रहे हैं।
find()
का use करके हम MongoDB के native find method के through raw query run कर रहे हैं।
●●●
MongoDB में find queries का use कर के आप records को retrieve कर सकते हैं। Mongoose के bypass करके direct MongoDB queries लिखना useful होता है जब आपको query के fine-tuned control कि need हो।
File : src/user/user.service.ts
// Find users with raw query
async findUsersWithFilterRaw(age: number): Promise<any> {
const users = await this.connection.db.collection('users').find({ age: { $gte: age } }).toArray();
return users;
}
यहां
find({ age: { $gte: age } })
का use करके हम raw query लिख रहे हैं जिसमे age greater than or equal तो condition लगायी गयी है।
toArray()
का use करके results को array में convert किया गया है।
●●●
Insert operations के लिए आप insertOne()
और insertMany()
का use कर सकते हैं MongoDB के native driver के साथ।
File : src/user/user.service.ts
// Insert single user with raw query
async insertUserRaw(userData: any): Promise<any> {
const result = await this.connection.db.collection('users').insertOne(userData);
return result;
}
यहां insertOne(userData)
का use करके एक नया user document MongoDB में insert किया जा रहा है।
// Insert multiple users with raw query
async insertMultipleUsersRaw(usersData: any[]): Promise<any> {
const result = await this.connection.db.collection('users').insertMany(usersData);
return result;
}
यहां insertMany(usersData)
का use करके एक साथ multiple user documents insert किये जा रहे हैं।
●●●
MongoDB में update operations के लिए आप updateOne()
, updateMany()
, और findOneAndUpdate()
methods का use कर सकते हैं।
File : src/user/user.service.ts
// Update a user with raw query
async updateUserRaw(id: string, updateData: any): Promise<any> {
const result = await this.connection.db.collection('users').updateOne(
{ _id: new this.connection.mongo.ObjectId(id) }, // Find by ID
{ $set: updateData } // Update data
);
return result;
}
यहां
updateOne()
का use करके एक specific user को ID के basis पर update किया गया है।
$set
operator का use करके हम fields को update कर रहे हैं।
●●●
Delete operations के लिए आप deleteOne()
और deleteMany()
का use करते हैं , इससे specific या multiple records को delete किया जा सकता है।
File : src/user/user.service.ts
// Delete a user with raw query
async deleteUserRaw(id: string): Promise<any> {
const result = await this.connection.db.collection('users').deleteOne(
{ _id: new this.connection.mongo.ObjectId(id) } // Delete by ID
);
return result;
}
यहां deleteOne()
का use करके specific ID के basis पर user को delete किया गया है।
// Delete users with age less than given value
async deleteUsersByAgeRaw(age: number): Promise<any> {
const result = await this.connection.db.collection('users').deleteMany({ age: { $lt: age } });
return result;
}
यहां deleteMany()
का use करके users को age के basis पर delete किया जा रहा है।
●●●
Use Raw Queries Only When Necessary : जब आपको fine-grained control या performance optimizations चाहिए हो तभी raw queries का use करें। For general CRUD operations, Mongoose का use best practice होता है।
Parameterize Queries to Avoid Injection : Raw queries लिखते वक्त always ensure करें कि आप parameters का use करें ताकि SQL/NoSQL injection attacks से बचा जा सके।
Optimize Query Performance : Raw queries में indexes का ध्यान रखें, ताकि queries fast execute हों। Specially large datasets के लिए, explain() method का use करके queries को analyze करें।
Handle Errors Properly : Raw queries में अगर कोई error आता है तो proper error handling implement करें। MongoDB driver से errors को catch करना जरूरी होता है ताकि आपको debugging और troubleshooting में help मिले।