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

MongoDB-এ অবজেক্ট অ্যারে থেকে নির্দিষ্ট আইটেম বের করা


অবজেক্ট অ্যারে থেকে ফিল্টার করা ডেটা বের করা

MongoDB-এ নেস্টেড অবজেক্ট অ্যারে থেকে নির্দিষ্ট শর্ত অনুযায়ী ডেটা বের করতে $unwind এবং $match ব্যবহার করা হয়।

নমুনা ডেটা তৈরি

> db.demo459.insertOne({
    _id: 1,
    "Information": [
        { "Name": "Chris", "_id": new ObjectId(), "details": ["HR"] },
        { "Name": "David", "_id": new ObjectId(), "details": ["Developer"] },
        { "Name": "Bob", "_id": new ObjectId(), "details": ["Account"] }
    ]
})

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

> db.demo459.find()

আউটপুট:

{ "_id": 1, "Information": [{ "Name": "Chris", "_id": ObjectId("..."), "details": ["HR"] }, { "Name": "David", "_id": ObjectId("..."), "details": ["Developer"] }, { "Name": "Bob", "_id": ObjectId("..."), "details": ["Account"] }] }

নির্দিষ্ট নামের ডিটেইলস বের করার কোয়েরি

> db.demo459.aggregate([
    { $unwind: "$Information" },
    { $unwind: "$Information.details" },
    { $match: { 'Information.Name': { $in: ["Chris", "Bob"] } } },
    { $group: { _id: null, detailList: { $addToSet: "$Information.details" } } }
])

ফলাফল:

{ "_id": null, "detailList": ["Account", "HR"] }

ব্যাখ্যা

  1. প্রথম $unwind: Information অ্যারে বিচ্ছিন্ন করে প্রতিটি অবজেক্টকে আলাদা ডকুমেন্ট বানায়
  2. দ্বিতীয় $unwind: details অ্যারে (স্ট্রিং অ্যারে) বিচ্ছিন্ন করে
  3. $match: শুধু "Chris" এবং "Bob" নামের এন্ট্রি রাখে
  4. $group + $addToSet: ইউনিক ডিটেইলস মান সংগ্রহ করে (ডুপ্লিকেট সরায়)
  5. এই প্যাটার্ন নেস্টেড অ্যারে থেকে ফিল্টার করা ডেটা একত্রিত করতে খুব কাজে লাগে।

  1. MongoDB-তে অ্যারে ইন্টারসেকশনের ডেটা পাওয়া

  2. MongoDB-তে এম্বেডেড অ্যারে থেকে নির্দিষ্ট এলিমেন্ট পাওয়া

  3. MongoDB-এ ডকুমেন্ট থেকে অ্যারে ভ্যালু ডিলিট করা

  4. MongoDB-তে distinct() ব্যবহার করে ইউনিক ভ্যালু বের করা