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

MongoDB-এ একাধিক অ্যারেকে একে অ্যারেতে রূপান্তর করা ($unwind)

MongoDB Aggregate-এ $unwind ব্যবহার করে অ্যারে ফ্ল্যাট করা

যখন ডকুমেন্টের মধ্যে অ্যারে অফ অ্যারে থাকে, তখন $unwind স্টেজ ব্যবহার করে প্রতিটি উপাদানকে আলাদা ডকুমেন্ট হিসেবে বের করা যায়। এটি রিপোর্টিং বা গ্রুপিং-এর জন্য খুব উপকারী।

উদাহরণ: নমুনা ডেটা ইনসার্ট

> db.demo289.insertOne({"Section":["A","B","E"],"Name":"Chris"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e4c06fcf49383b52759cbc3") }
> db.demo289.insertOne({"Section":["C","D","B"],"Name":"David"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e4c070af49383b52759cbc4") }

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

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

আউটপুট:

{ "_id" : ObjectId("5e4c06fcf49383b52759cbc3"), "Section" : [ "A", "B", "E" ], "Name" : "Chris" }
{ "_id" : ObjectId("5e4c070af49383b52759cbc4"), "Section" : [ "C", "D", "B" ], "Name" : "David" }

$unwind কোয়ারি

> db.demo289.aggregate({ $unwind : "$Section" } );

আউটপুট:

{ "_id" : ObjectId("5e4c06fcf49383b52759cbc3"), "Section" : "A", "Name" : "Chris" }
{ "_id" : ObjectId("5e4c06fcf49383b52759cbc3"), "Section" : "B", "Name" : "Chris" }
{ "_id" : ObjectId("5e4c06fcf49383b52759cbc3"), "Section" : "E", "Name" : "Chris" }
{ "_id" : ObjectId("5e4c070af49383b52759cbc4"), "Section" : "C", "Name" : "David" }
{ "_id" : ObjectId("5e4c070af49383b52759cbc4"), "Section" : "D", "Name" : "David" }
{ "_id" : ObjectId("5e4c070af49383b52759cbc4"), "Section" : "B", "Name" : "David" }

ব্যাখ্যা

  • $unwind: "$Section" — Section অ্যারেটির প্রতিটি উপাদানের জন্য আলাদা ডকুমেন্ট তৈরি করে।
  • মূল ডকুমেন্টের অন্যান্য ফিল্ড (যেমন Name) প্রতিটি নতুন ডকুমেন্টে কপি হয়ে যায়।
  • এটি অ্যারে 안에 অ্যারে থাকলে নেস্টেড লেভেল অনুযায়ী একাধিকবার প্রয়োগ করতে হয়।

টিপস: preserveNullAndEmptyArrays: true অপশন দিলে খালি অ্যারে বা অনুপস্থিত ফিল্ডওয়ালা ডকুমেন্টও আউটপুটে থাকবে।

  1. MongoDB-এ অ্যারেতে সব এলিমেন্ট আপডেট করা ($[] অল পজিশনাল অপারেটর)

  2. MongoDB-তে অ্যারে থেকে একাধিক মান বের করার কোয়ারি

  3. MongoDB-এ অ্যারে অবজেক্টের মধ্যে একাধিক শর্ত ম্যাচ করা

  4. MongoDB-এ অ্যারেতে নির্দিষ্ট মান রিপ্লেস করা (Positional $ ও $set)