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

MongoDB-এ ডট (.) থাকা কী খুঁজে বের করা

কী নেমে ডট (.) থাকা ডকুমেন্ট খুঁজে বের করা

MongoDB-এ ফিল্ড নেমে ডট (.) থাকলে সাধারণ কুয়েরি কাজ করে না। এমন ডকুমেন্ট খুঁজে বের করার জন্য অগ্রেশন পাইপলাইনে $objectToArray, $filter এবং $indexOfBytes ব্যবহার করতে হয়।

উদাহরণ: ডটসহ কী সহ ডকুমেন্ট তৈরি

> db.demo364.insertOne({ "details" : { "details1.otherdetails.Name" : { "FirstName":"Chris" } } });
{ "acknowledged" : true, "insertedId" : ObjectId("5e57d485d0ada61456dc936d") }
> db.demo364.insertOne({ "details" : { "details1.otherdetails.Name" : { "FirstName":"David" } } });
{ "acknowledged" : true, "insertedId" : ObjectId("5e57d486d0ada61456dc936e") }

সমস্ত ডকুমেন্ট

> db.demo364.find();
{ "_id" : ObjectId("5e57d485d0ada61456dc936d"), "details" : { "details1.otherdetails.Name" : { "FirstName" : "Chris" } } }
{ "_id" : ObjectId("5e57d486d0ada61456dc936e"), "details" : { "details1.otherdetails.Name" : { "FirstName" : "David" } } }

অগ্রেশন কুয়েরি: ডটসহ কী খুঁজে বের করা

> db.demo364.aggregate([
    { $addFields: {
        result: {
            $filter: {
                input: { $objectToArray: "$details" },
                cond: {
                    $ne: [ { $indexOfBytes: [ "$$this.k", "." ] }, -1 ]
                }
            }
        }
    }},
    { $match: { $expr: { $ne: [ { $size: "$result" }, 0 ] } } },
    { $project: { result: 0 } }
])

ফলাফল

{ "_id" : ObjectId("5e57d485d0ada61456dc936d"), "details" : { "details1.otherdetails.Name" : { "FirstName" : "Chris" } } }
{ "_id" : ObjectId("5e57d486d0ada61456dc936e"), "details" : { "details1.otherdetails.Name" : { "FirstName" : "David" } } }

পাইপলাইন ব্যাখ্যা

  1. $objectToArray: অবজেক্টকে কী-ভ্যালু পেয়ারের অ্যারেতে রূপান্তর করে ([{k: "key", v: "value"}])।
  2. $filter: অ্যারেতে শুধু ডট (.) থাকা কীগুলো ফিল্টার করে।
  3. $indexOfBytes: স্ট্রিং-এ ডট (.) আছে কিনা চেক করে (না থাকলে -1 রিটার্ন করে)।
  4. $match: ফিল্টার করা রেজাল্ট খালি নয় এমন ডকুমেন্ট সিলেক্ট করে।
  5. $project: অস্থায়ী result ফিল্ড বাদ দেয়।

সতর্কতা: ফিল্ড নেমে ডট (.) ব্যবহার এড়ানো ভালো, কারণ এটি কুয়েরি এবং আপডেটে জটিলতা সৃষ্টি করে।

  1. MongoDB-এ নির্দিষ্ট সংখ্যক রেকর্ড বের করা (limit() মেথড)

  2. MongoDB-এ নির্দিষ্ট FirstName এবং LastName সম্বয় ডকুমেন্ট খোঁজা ($and + $in)

  3. MongoDB-এ নির্দিষ্ট প্রাইস থেকে কম প্রাইস والے রেকর্ড খুঁজে বের করা

  4. MySQL-এ LIKE দিয়ে % (পারসেন্ট) ক্যারেক্টার সম্বলিত রেকর্ড খোঁজা