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

MongoDB-এ টাইমস্ট্যাম্প শুধু অনুপস্থিত থাকলে যোগ করা


শর্তসাপেক্ষ টাইমস্ট্যাম্প আপডেট: upsert ও multi

MongoDB-এ শুধু যেসব ডকুমেন্টে নির্দিষ্ট ফিল্ড (যেমন DueDate) নেই, সেগুলোতে বর্তমান টাইমস্ট্যাম্প সেট করতে update() দিয়ে upsert: false, multi: true ব্যবহার করা হয়।

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

> db.demo479.insertOne({ "DueDate": new ISODate("2020-01-10"), "Name": "Chris" })
> db.demo479.insertOne({ "Name": "David" })
> db.demo479.insertOne({ "DueDate": new ISODate("2019-12-31"), "Name": "Bob" })
> db.demo479.insertOne({ "Name": "Carol" })

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

> db.demo479.find()

আউটপুট:

{ "_id": ObjectId("..."), "DueDate": ISODate("2020-01-10T00:00:00Z"), "Name": "Chris" }
{ "_id": ObjectId("..."), "Name": "David" }
{ "_id": ObjectId("..."), "DueDate": ISODate("2019-12-31T00:00:00Z"), "Name": "Bob" }
{ "_id": ObjectId("..."), "Name": "Carol" }

DueDate অনুপস্থিত ডকুমেন্টগুলতে বর্তমান টাইমস্ট্যাম্প যোগ

> db.demo479.update(
    { DueDate: { $exists: false } },
    { $set: { "DueDate": new Date } },
    { upsert: false, multi: true }
)

ফলাফল:

WriteResult({ "nMatched": 2, "nUpserted": 0, "nModified": 2 })

আপডেট後の ডকুমেন্ট

> db.demo479.find()

আউটপুট:

{ "_id": ObjectId("..."), "DueDate": ISODate("2020-01-10T00:00:00Z"), "Name": "Chris" }
{ "_id": ObjectId("..."), "Name": "David", "DueDate": ISODate("2020-03-30T14:52:29.656Z") }
{ "_id": ObjectId("..."), "DueDate": ISODate("2019-12-31T00:00:00Z"), "Name": "Bob" }
{ "_id": ObjectId("..."), "Name": "Carol", "DueDate": ISODate("2020-03-30T14:52:29.656Z") }

ব্যাখ্যা

  • { DueDate: { $exists: false } }: শুধু যেসব ডকুমেন্টে DueDate ফিল্ড নেই তাদের মэтচ করে
  • $set: { "DueDate": new Date }: বর্তমান সময় (ISODate) সেট করে
  • upsert: false: নতুন ডকুমেন্ট তৈরি করবে না (ডিফল্ট)
  • multi: true: সব মিলে যাওয়া ডকুমেন্ট আপডেট করবে (ডিফল্ট false = শুধু একটা)

⚠️ আধুনিক সিনট্যাক্স (MongoDB 3.2+)

> db.demo479.updateMany(
    { DueDate: { $exists: false } },
    { $set: { "DueDate": new Date() } }
)

updateMany() ডিফল্টেই multi: true আচরণ করে। update() ডিপ্রিকেটেড।

  1. MongoDB-এ শুধু ObjectId দিয়ে ডকুমেন্ট আপডেট করা

  2. MongoDB-এ bulkWrite() ব্যবহার করে একাধিক ডকুমেন্ট যোগ করা

  3. MongoDB-এ নির্দিষ্ট ফিল্ডের সব ডকুমেন্টের মান যোগ করা (aggregate $sum)

  4. MongoDB-তে $slice ব্যবহার করে অ্যারে থেকে একমাত্র এলিমেন্ট বের করা