নির্দিষ্ট ডেট ফরম্যাটে ফিল্টারিং
MongoDB-এ ডেট ফিল্ডকে স্ট্রিং ফরম্যাটে রূপান্তর করে ফিল্টার করতে $dateToString অপারেটর ব্যবহার করা হয়।
নমুনা ডেটা তৈরি
> db.demo433.insertOne({ "DueDate": new Date("2019-11-23") })
> db.demo433.insertOne({ "DueDate": new Date("2020-01-03") })
সমস্ত ডকুমেন্ট দেখানো
> db.demo433.find()
আউটপুট:
{ "_id": ObjectId("..."), "DueDate": ISODate("2019-11-23T00:00:00Z") }
{ "_id": ObjectId("..."), "DueDate": ISODate("2020-01-03T00:00:00Z") }
ডেট ফরম্যাটে ফিল্টার করার কোয়েরি
> db.demo433.aggregate([
{ $addFields: {
stringDate: {
$dateToString: { format: "%Y-%m-%d", date: "$DueDate" }
}
}},
{ $match: { "stringDate": "2020-01-03" }},
{ $project: { "stringDate": 0 }}
])
ফলাফল:
{ "_id": ObjectId("..."), "DueDate": ISODate("2020-01-03T00:00:00Z") }
ব্যাখ্যা
$dateToString: ডেট অবজেক্টকে নির্দিষ্ট ফরম্যাটে স্ট্রিং-এ রূপান্তর করে (এখানে YYYY-MM-DD)$addFields: নতুন ফিল্ডstringDateযোগ করে$match: স্ট্রিং ডেট দিয়ে ফিল্টার করে$project: সাহায্যকারী ফিল্ডটি আউটপুট থেকে সরিয়ে দেয়
নোট: বড় ডেটাসেটে এই পদ্ধতিটি ইনডেক্স ব্যবহার করতে পারে না। পারফরম্যান্সের জন্য ডেট রেঞ্জ কোয়েরি ($gte, $lte) ভালো।