কম্পিউটার টিউটোরিয়াল

MongoDB-এ কমা-সহ স্ট্রিংকে ডাবল (Double) নম্বরে রূপান্তর করা


MongoDB এগ্রিগেশনে $convert, $reduce, $split ব্যবহার করে ফরম্যাটেড স্ট্রিংকে নম্বরে রূপান্তর

MongoDB-এ কমা (,) সeperator-সহ স্ট্রিং (যেমন "1,533.07" বা "8899,322,135,875.50") কে ডাবল (Double) নম্বরে রূপান্তর করতে এগ্রিগেশন পাইপলাইনে স্ট্রিং ম্যানিপুলেশন এবং টাইপ কনভার্সন কম্বাইন করতে হয়।

১. কালেকশন ও নমুনা ডেটা তৈরি

> db.demo335.insertOne({"Value":"45,67,78.0"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e522a1cf8647eb59e562091") }
> db.demo335.insertOne({"Value":"17664,76,534.0"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e522a26f8647eb59e562092") }
> db.demo335.insertOne({"Value":"8899,322,135,875.50"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e522a34f8647eb59e562093") }
> db.demo335.insertOne({"Value":"1,533.07"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e522ab9f8647eb59e562094") }

২. সব ডকুমেন্ট দেখানো

> db.demo335.find();

আউটপুট:

{ "_id" : ObjectId("5e522a1cf8647eb59e562091"), "Value" : "45,67,78.0" }
{ "_id" : ObjectId("5e522a26f8647eb59e562092"), "Value" : "17664,76,534.0" }
{ "_id" : ObjectId("5e522a34f8647eb59e562093"), "Value" : "8899,322,135,875.50" }
{ "_id" : ObjectId("5e522ab9f8647eb59e562094"), "Value" : "1,533.07" }

৩. জটিল এগ্রিগেশন কোয়েরি: কমা সরিয়ে ডাবল-এ কনভার্ট

db.demo335.aggregate([
  { $project: {
      data: {
        $convert: {
          input: {
            $reduce: {
              input: { $split: ['$Value', ','] },
              initialValue: '',
              in: { $concat: ['$$value', '$$this'] }
            }
          },
          to: 'double',
          onError: 0
        }
      }
  }}
])

স্টেপ-বাই-স্টেপ ব্যাখ্যা:

  1. $split: ['$Value', ','] - কমা দিয়ে স্ট্রিং স্প্লিট করে অ্যারে বানায়: ["45", "67", "78.0"]।
  2. $reduce - অ্যারে-র এলিমেন্টগুলো কনক্যাট করে একক স্ট্রিং বানায়: "456778.0"।
  3. $convert: {to: 'double', onError: 0} - স্ট্রিংকে ডাবল নম্বরে রূপান্তর। এরর হলে ০ রিটার্ন।

৪. ফলাফল

{ "_id" : ObjectId("5e522a1cf8647eb59e562091"), "data" : 456778 }
{ "_id" : ObjectId("5e522a26f8647eb59e562092"), "data" : 1766476534 }
{ "_id" : ObjectId("5e522a34f8647eb59e562093"), "data" : 8899322135875.5 }
{ "_id" : ObjectId("5e522ab9f8647eb59e562094"), "data" : 1533.07 }

নোট: "45,67,78.0" -> "456778.0" -> 456778 (ডাবল)। এটি লোকালি-স্পেসিফিক ফরম্যাট হ্যান্ডল করার জন্য আরও জটিল লজিক লাগতে পারে (যেমন ইউরোপিয়ান ফরম্যাটে কমা ডেসিমেল সেপারেটর)।


  1. MongoDB-তে LIMIT ব্যবহার করে কোয়ারি করার পদ্ধতি

  2. MongoDB-তে নির্দিষ্ট স্ট্রিং দিয়ে ডকুমেন্ট এক্সট্র্যাক্ট করা

  3. MongoDB-তে কেস-ইনসেনসিটিভ (Case-Insensitive) সার্চ করা ($regex)

  4. জাভাতে String কে Double-এ রূপান্তর করা