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

MongoDB-এ অগ্রেশন ব্যবহার করে "work" শব্দ ধারণকারী লগ ফিল্টার করা

$filter এবং $indexOfBytes ব্যবহার করে কেস-ইনসেনসিটিভ স্ট্রিং সার্চ

MongoDB Aggregation-এ নেস্টেড অ্যারেতে থেকে নির্দিষ্ট শব্দ ধারণকারী এলিমেন্টগুলো ফিল্টার করতে $addFields, $filter, $indexOfBytes, $toUpper ব্যবহার করা হয়।

নমুনা সংগ্রহ তৈরি

> db.demo383.insertOne(
    {
        "ServerName":"Jboss",
        "ServerLogs": [
            { "status":"Working" },
            { "status":"Stop" },
            { "status":"Worked" }
        ]
    }
);
{ "acknowledged" : true, "insertedId" : ObjectId("5e5b635422064be7ab44e7f1") }

ডকুমেন্ট দেখানো

> db.demo383.find().pretty();

আউটপুট:


"work" শব্দ ধারণকারী লগ ফিল্টার (অগ্রেশন)

> db.demo383.aggregate([
    { "$addFields": {
        "ServerLogs": {
            "$filter": {
                "input": "$ServerLogs",
                "cond": {
                    "$ne": [
                        { "$indexOfBytes": [
                            { "$toUpper": "$$this.status" },
                            { "$toUpper": "work" }
                        ]},
                        -1
                    ]
                }
            }
        }
    }}
])

ফলাফল (Working এবং Worked রাখা, Stop বাদ):


ব্যাখ্যা: $toUpper দিয়ে কেস-ইনসেনসিটিভ করা হয়েছে। $indexOfBytes "work" খুঁজে পেলে পজিশন (>=0) ফেরত দেয়, না পেলে -1। $ne: -1 দিয়ে শুধু মিলে যাওয়া রাখা হয়েছে। MongoDB 4.2+ এ $regexMatch সহজতর।

  1. MongoDB-এ অগ্রেশন ব্যবহার করে "work" শব্দ ধারণকারী লগ ফিল্টার করা

  2. MongoDB-তে সিম্পল কুয়েরি ব্যবহার করে ডকুমেন্ট ফিল্টার করা

  3. MongoDB-এ রোল (Role) অনুযায়ী শুধু Name ফিল্ড ফেচ করা

  4. MongoDB-তে ডট নোটেশন ব্যবহার করে নেস্টেড ডকুমেন্ট আপডেট করা