Node.js MongoDB Create Database

Node.js MongoDB

একটি ডাটাবেস তৈরি করা হচ্ছে

MongoDB-তে একটি ডাটাবেস তৈরি করতে, প্রথমে একটি MongoClient অবজেক্ট তৈরি করুন, তারপর একটি বৈধ IP ঠিকানা এবং আপনি যে ডাটাবেস তৈরি করতে চান তার নাম সহ একটি সংযোগ URL উল্লেখ করুন।

ডাটাবেস বিদ্যমান না থাকলে, MongoDB এটি তৈরি করে এবং এটির সাথে একটি সংযোগ তৈরি করে।

উদাহরণ

"mydb" নামে একটি ডাটাবেস তৈরি করুন:

let MongoClient = require('mongodb').MongoClient;
let url = "mongodb://localhost:27017/mydb";

MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  console.log("Database created!");
  db.close();
});

উপরের কোডটি "demo_create_mongo_db.js" ফাইলে সংরক্ষণ করুন এবং ফাইলটি চালান:

C:\Users\Your Name>node demo_create_mongo_db.js

এটি আপনাকে এই ফলাফল দেবে:

Database created!

⚠️গুরুত্বপূর্ণ নোট:

MongoDB-তে, বিষয়বস্তু উপলব্ধ না হওয়া পর্যন্ত একটি ডাটাবেস তৈরি করা হয় না!

প্রকৃতপক্ষে ডাটাবেস তৈরি করার আগে, MongoDB অন্তত একটি নথি (রেকর্ড) সহ একটি সংগ্রহ (টেবিল) তৈরি না করা পর্যন্ত অপেক্ষা করে।

একটি আধুনিক সংযোগ পদ্ধতি

আধুনিক মঙ্গোক্লায়েন্ট সিনট্যাক্স

const { MongoClient } = require('mongodb');

async function createDatabase() {
  const uri = "mongodb://localhost:27017/mydb";
  const client = new MongoClient(uri);

  try {
    await client.connect();
    console.log("Connected successfully to server");
    console.log("Database 'mydb' is ready to use!");
  } catch (err) {
    console.error("Error:", err);
  } finally {
    await client.close();
  }
}

createDatabase();

ক্লাউড মঙ্গোডিবি সংযোগ

const { MongoClient } = require('mongodb');

async function connectToCloud() {
  // Replace with your MongoDB Atlas connection string
  const uri = "mongodb+srv://username:password@cluster0.mongodb.net/mydb?retryWrites=true&w=majority";
  const client = new MongoClient(uri);

  try {
    await client.connect();
    console.log("Connected to MongoDB Atlas");
    console.log("Database created or connected successfully");
  } catch (err) {
    console.error("Connection error:", err);
  } finally {
    await client.close();
  }
}

connectToCloud();

ডাটাবেস তৈরির আচরণ

যদি ডাটাবেস বিদ্যমান থাকে

  • শুধুমাত্র সংযোগ তৈরি করা হবে
  • কোন তথ্য পরিবর্তন হবে না
  • ডাটাবেস পুনরায় তৈরি করা হবে না
  • বিদ্যমান প্যাকেজ অ্যাক্সেস করা হয়

ডাটাবেস না হলে

  • ডাটাবেসের নাম নিবন্ধন করা হবে
  • প্রকৃত নির্মাণ বিলম্বিত হবে
  • প্রথম নথি ঢোকানোর জন্য অপেক্ষা করে
  • প্যাকেজটি স্বয়ংক্রিয়ভাবে তৈরি হবে

প্রকৃত ডাটাবেস তৈরি

const { MongoClient } = require('mongodb');

async function createDatabaseWithContent() {
  const uri = "mongodb://localhost:27017/mydb";
  const client = new MongoClient(uri);

  try {
    await client.connect();
    const database = client.db("mydb");
    const collection = database.collection("users");
    
    // Insert first document - this actually creates the database
    const result = await collection.insertOne({
      name: "John Doe",
      email: "john@example.com",
      createdAt: new Date()
    });
    
    console.log("Database and collection created!");
    console.log("First document inserted with id:", result.insertedId);
    
  } catch (err) {
    console.error("Error:", err);
  } finally {
    await client.close();
  }
}

createDatabaseWithContent();

লিঙ্ক URL বিন্যাস

সংযোগের ধরন URL বিন্যাস ব্যাখ্যা
স্থানীয় সার্ভার mongodb://localhost:27017/mydb ডিফল্ট পোর্ট সহ স্থানীয় সার্ভার
একটি কাস্টম পোর্ট সঙ্গে mongodb://localhost:27018/mydb কাস্টম পোর্ট সহ স্থানীয় সার্ভার
MongoDB Atlas mongodb+srv://user:pass@cluster.mongodb.net/mydb মঙ্গোডিবি ক্লাউড সার্ভিস (অ্যাটলাস)
আরও বিকল্প সহ mongodb://host1:27017,host2:27017/mydb?replicaSet=rs0 আরো বিকল্প এবং আরো সার্ভার

ডাটাবেস অপারেশন

ডাটাবেস তালিকাভুক্ত করা

const { MongoClient } = require('mongodb');

async function listDatabases() {
  const uri = "mongodb://localhost:27017";
  const client = new MongoClient(uri);

  try {
    await client.connect();
    const databaseList = await client.db().admin().listDatabases();
    
    console.log("Databases:");
    databaseList.databases.forEach(db => {
      console.log(` - ${db.name}`);
    });
    
  } catch (err) {
    console.error("Error:", err);
  } finally {
    await client.close();
  }
}

listDatabases();

ডাটাবেস প্রাপ্যতা পরীক্ষা করুন

const { MongoClient } = require('mongodb');

async function checkDatabaseExists() {
  const uri = "mongodb://localhost:27017";
  const client = new MongoClient(uri);
  const dbName = "mydb";

  try {
    await client.connect();
    const databaseList = await client.db().admin().listDatabases();
    const exists = databaseList.databases.some(db => db.name === dbName);
    
    if (exists) {
      console.log(`Database '${dbName}' exists`);
    } else {
      console.log(`Database '${dbName}' does not exist`);
    }
    
  } catch (err) {
    console.error("Error:", err);
  } finally {
    await client.close();
  }
}

checkDatabaseExists();

ডাটাবেস তৈরির জন্য সর্বোত্তম অনুশীলন

নামকরণের রীতি

  • ছোট হাতের অক্ষর ব্যবহার করুন
  • আন্ডারস্কোর এড়িয়ে চলুন
  • বর্ণনামূলক নাম ব্যবহার করুন
  • প্রকল্পের উদ্দেশ্য প্রতিফলিত করুন

কোড সিস্টেম

  • সংযোগ স্ট্রিং ধ্রুবক হিসাবে সংরক্ষণ করুন
  • সঠিক ত্রুটি হ্যান্ডলিং ব্যবহার করুন
  • সংযোগগুলি সঠিকভাবে বন্ধ করুন
  • অ্যাসিঙ্ক্রোনাস অপারেশন ব্যবহার করুন

নিরাপত্তা

  • অসন্তুষ্ট সংযোগ স্ট্রিং ব্যবহার করবেন না
  • পরিবেশ ভেরিয়েবলের মাধ্যমে লগইন বিশদ সংরক্ষণ করুন
  • SSL/TLS ব্যবহার করুন
  • অ্যাক্সেস নিয়ন্ত্রণ সেট করুন

সম্পূর্ণ উদাহরণ

ডাটাবেস তৈরি এবং পরিচালনার একটি সম্পূর্ণ উদাহরণ:

const { MongoClient } = require('mongodb');

class DatabaseManager {
  constructor(connectionString) {
    this.connectionString = connectionString;
    this.client = new MongoClient(connectionString);
  }

  async connect() {
    try {
      await this.client.connect();
      console.log("Connected to MongoDB server");
      return true;
    } catch (error) {
      console.error("Connection failed:", error);
      return false;
    }
  }

  async createDatabase(dbName) {
    try {
      const db = this.client.db(dbName);
      // Test the connection by listing collections
      const collections = await db.listCollections().toArray();
      console.log(`Database '${dbName}' is accessible`);
      console.log(`Existing collections: ${collections.length}`);
      return db;
    } catch (error) {
      console.error("Error accessing database:", error);
      throw error;
    }
  }

  async ensureDatabaseAndCollection(dbName, collectionName) {
    try {
      const db = this.client.db(dbName);
      const collection = db.collection(collectionName);
      
      // Insert a temporary document to ensure creation
      const tempDoc = {
        _id: "temp_creation_doc",
        createdAt: new Date(),
        purpose: "Database and collection creation"
      };
      
      await collection.insertOne(tempDoc);
      await collection.deleteOne({ _id: "temp_creation_doc" });
      
      console.log(`Database '${dbName}' and collection '${collectionName}' are ready`);
      return { db, collection };
    } catch (error) {
      console.error("Error ensuring database and collection:", error);
      throw error;
    }
  }

  async close() {
    try {
      await this.client.close();
      console.log("Connection closed");
    } catch (error) {
      console.error("Error closing connection:", error);
    }
  }
}

// Usage example
async function main() {
  const connectionString = "mongodb://localhost:27017";
  const dbManager = new DatabaseManager(connectionString);

  try {
    const connected = await dbManager.connect();
    if (!connected) return;

    // Create/access database
    const db = await dbManager.createDatabase("myapp");
    
    // Ensure database and collection exist
    const { collection } = await dbManager.ensureDatabaseAndCollection("myapp", "users");
    
    console.log("Database setup completed successfully!");
    
  } catch (error) {
    console.error("Main function error:", error);
  } finally {
    await dbManager.close();
  }
}

// Run the example
main();

অনুশীলন করুন

MongoDB-তে, একটি ডাটাবেস তৈরি না হওয়া পর্যন্ত সঠিক বিবৃতি নির্বাচন করুন।

যতক্ষণ না এটি একটি নাম দেওয়া হয়
✗ ভুল! ডাটাবেসের নামকরণ যথেষ্ট নয়, বিষয়বস্তু প্রয়োজন
এটি সংযোগ না হওয়া পর্যন্ত
✗ ভুল! সংযোগ শুধুমাত্র একটি ডাটাবেস তৈরি করে না, বিষয়বস্তু প্রয়োজন
যতক্ষণ এটি বিষয়বস্তু আছে
✓ ঠিক আছে! MongoDB-তে, ডাটাবেস আসলে তৈরি হয় না যতক্ষণ না অন্তত একটি নথি দিয়ে একটি সংগ্রহ তৈরি করা হয়
যতক্ষণ না এটি তৈরি করার নির্দেশ দেওয়া হয়
✗ ভুল! MongoDB এর একটি CREATE DATABASE কমান্ড নেই, এটি স্বয়ংক্রিয়ভাবে তৈরি হয়