MongoDB-এ একটি স্ট্রিং ফিল্ড থেকে নির্দিষ্ট সংখ্যক ক্যারেক্টার এক্সট্রাক্ট করতে অ্যাগ্রিগেশন পাইপলাইনে $project স্টেজের সাথে $substr (বা $substrBytes, $substrCP) অপারেটর ব্যবহার করা হয়।
সিনট্যাক্স
{ $substr: [ "", , ] }
start_index- ০-ভিত্তিক ইনডেক্স (নেগেটিভ হলে শেষ থেকে)۔length- কতগুলো ক্যারেক্টার নেয়া হবে।
নমুনা কালেকশন তৈরি
> db.demo233.insertOne({ "Paragraph": "My Name is John Smith.I am learning MongoDB database" });
{ "acknowledged": true, "insertedId": ObjectId("5e41877df4cebbeaebec5146") }
> db.demo233.insertOne({ "Paragraph": "David Miller is a good student and learning Spring and Hibernate Framework." });
{ "acknowledged": true, "insertedId": ObjectId("5e4187d7f4cebbeaebec5147") }
ডকুমেন্টগুলো দেখানো
> db.demo233.find().pretty();
আউটপুট:
{ "_id": ObjectId("5e41877df4cebbeaebec5146"), "Paragraph": "My Name is John Smith.I am learning MongoDB database" }
{ "_id": ObjectId("5e4187d7f4cebbeaebec5147"), "Paragraph": "David Miller is a good student and learning Spring and Hibernate Framework." }
প্রথম ১০ ক্যারেক্টার এক্সট্রাক্ট করা
> db.demo233.aggregate([
{
$project: {
Paragraph: { $substr: [ "$Paragraph", 0, 10 ] }
}
}
]);
ফলাফল
{ "_id": ObjectId("5e41877df4cebbeaebec5146"), "Paragraph": "My Name is" }
{ "_id": ObjectId("5e4187d7f4cebbeaebec5147"), "Paragraph": "David Mill" }
ব্যাখ্যা:
- ইনডেক্স ০ থেকে ১০ ক্যারেক্টার (০-৯) নেওয়া হয়েছে।
- প্রথম ডকুমেন্ট: "My Name is" (১০ ক্যারেক্টার, স্পেস সহ)।
- দ্বিতীয় ডকুমেন্ট: "David Mill" (১০ ক্যারেক্টার)।
আধুনিক অপারেটরها (MongoDB ৪.০+)
| অপারেটর | বিবরণ |
|---|---|
$substrBytes | বাইট-ভিত্তিক সাবস্ট্রিং (UTF-8 মাল্টি-বাইট ক্যারেক্টারের জন্য ভিন্ন ফলাফল দিতে পারে) |
$substrCP | কোড পয়েন্ট-ভিত্তিক সাবস্ট্রিং (ইমোজি/স্পেশাল ক্যারেক্টারের জন্য সঠিক) |
উদাহরণ: $substrCP (ইমোজি হ্যান্ডলিং)
db.demo233.aggregate([
{ $project: {
short: { $substrCP: [ "$Paragraph", 0, 10 ] }
}
}
]);
বাংলা/ইমোজি থাকলে $substrCP ব্যবহার করাই ভালো।