স্পেসিফিক ডকুমেন্ট ডিলিট: remove() + skip()
MongoDB-এ নির্দিষ্ট পজিশন থেকে শুরু করে ডকুমেন্ট ডিলিট করতে (পার্শিয়াল ডিলিট) find().skip().toArray() দিয়ে আইডি সংগ্রহ করে remove() দিয়ে ডিলিট করা হয়।
নমুনা ডেটা তৈরি (৭টি ডকুমেন্ট)
> db.demo488.insertOne({ "Name": "Chris" })
> db.demo488.insertOne({ "Name": "David" })
> db.demo488.insertOne({ "Name": "Bob" })
> db.demo488.insertOne({ "Name": "Mike" })
> db.demo488.insertOne({ "Name": "Sam" })
> db.demo488.insertOne({ "Name": "John" })
> db.demo488.insertOne({ "Name": "Robert" })
সমস্ত ডকুমেন্ট দেখানো
> db.demo488.find()
আউটপুট: ৭টি ডকুমেন্ট (Chris, David, Bob, Mike, Sam, John, Robert)
৪ নম্বর থেকে বাকি সব ডিলিট (৫ম, ৬ষ্ঠ, ৭ম)
> var deleteData = db.demo488.find({}, { _id: 1 }).skip(4).toArray().map(function(d) { return d._id; })
> db.demo488.remove({ _id: { $in: deleteData } })
ফলাফল:
WriteResult({ "nRemoved": 3 })
আবার ফাইন্ড
> db.demo488.find()
ফলাফল: শুধু প্রথম ৪টি (Chris, David, Bob, Mike)
ব্যাখ্যা
find({}, { _id: 1 }): শুধু _id ফিল্ড নিয়ে সব ডকুমেন্ট.skip(4): প্রথম ৪টি বাদ দিয়ে (অফসেট).toArray(): অ্যারে-এ রূপান্তর.map(...): শুধু _id মানগুলো বের করেremove({ _id: { $in: deleteData } }): সংগৃহীত আইডি গুলো ডিলিট করেremove()ডিপ্রিকেটেড (MongoDB 3.2+),deleteMany()ব্যবহার করুনskip()বড় অফসেটে ধীর (ইন্ডেক্স স্ক্যান করে না)- বেটার প্যাটার্ন: টাইমস্ট্যাম্প বা _id রেঞ্জ দিয়ে ডিলিট করুন:
deleteMany({ _id: { $gt: lastKeptId } }) save()ওremove()লিগেসি মেথড, নতুন প্রজেক্টে এড়িয়ে চলুন