MongoDB-এ ISODate কে টাইমস্ট্যাম্প (মিলিসেকেন্ড) এ কনভার্ট করতে অ্যাগ্রিগেশন পাইপলাইনে $toLong অপারেটর ব্যবহার করা হয়।
কলেকশন এবং ডকুমেন্ট তৈরি
> db.demo93.insertOne({"UserName":"Chris","ArrivalDate":new ISODate("2020-10-01")});
{ "acknowledged" : true, "insertedId" : ObjectId("5e2d4b6479799acab037af68") }
> db.demo93.insertOne({"UserName":"David","ArrivalDate":new ISODate("2019-12-31")});
{ "acknowledged" : true, "insertedId" : ObjectId("5e2d4b7379799acab037af69") }
সব ডকুমেন্ট দেখানো
> db.demo93.find();
আউটপুট:
{ "_id" : ObjectId("5e2d4b6479799acab037af68"), "UserName" : "Chris", "ArrivalDate" : ISODate("2020-10-01T00:00:00Z") }
{ "_id" : ObjectId("5e2d4b7379799acab037af69"), "UserName" : "David", "ArrivalDate" : ISODate("2019-12-31T00:00:00Z") }
টাইমস্ট্যাম্পে কনভার্ট করার কোয়ারী
$match দিয়ে "Chris" ফিল্টার করা হয়েছে, তারপর $addFields এবং $toLong দিয়ে টাইমস্ট্যাম্প বের করা হয়েছে:
> db.demo93.aggregate([
... { "$match": { "UserName": "Chris" }},
... { "$addFields": {
... "timestamp": { "$toLong": "$ArrivalDate" }
... }}
... ]);
ফলাফল
{ "_id" : ObjectId("5e2d4b6479799acab037af68"), "UserName" : "Chris", "ArrivalDate" : ISODate("2020-10-01T00:00:00Z"), "timestamp" : NumberLong("1601510400000") }
ব্যাখ্যা:
$toLong- ISODate কে ১৯৭০ সালের ১ জানুয়ারি থেকে মিলিসেকেন্ডে কনভার্ট করে (Unix timestamp × 1000)NumberLong- ৬৪-বিট ইন্টিজার টাইপ (MongoDB শেলে প্রদর্শনের জন্য)- ১৬০১৫১০৪০০০০০ মিলিসেকেন্ড = ২০২০-১০-০১ ০০:০০:০০ UTC
অন্যান্য টাইম কনভার্সন অপারেটর:
$toDate- টাইমস্ট্যাম্প/স্ট্রিং থেকে ISODate$dateToString- ISODate থেকে ফরম্যাটেড স্ট্রিং (যেমন: "%Y-%m-%d")$dateFromString- স্ট্রিং থেকে ISODate
নোট: $toLong MongoDB 4.0+ ভার্সনে উপলব্ধ। পুরানো ভার্সনে { $subtract: [ "$ArrivalDate", new Date(0) ] } ব্যবহার করতে হতো।