MongoDB-এ অ্যারেতে নেস্টেড ডেট ফিল্ডকে স্ট্রিং ফরম্যাটে কনভার্ট করতে অ্যাগ্রিগেশন পাইপলাইনে $map এবং $dateToString অপারেটর একসাথে ব্যবহার করা হয়।
কলেকশন এবং ডকুমেন্ট তৈরি
> db.demo104.insertOne({
... "AppName" : "Online Book",
... "Details" : [
... {
... "ClientName" : "Chris",
... "Deadline" : new ISODate("2020-03-10")
... }
... ]
... });
{ "acknowledged" : true, "insertedId" : ObjectId("5e2ed7fd9fd5fd66da21446f") }
সব ডকুমেন্ট দেখানো
> db.demo104.find().pretty();
আউটপুট:
{ "_id" : ObjectId("5e2ed7fd9fd5fd66da21446f"), "AppName" : "Online Book", "Details" : [ { "ClientName" : "Chris", "Deadline" : ISODate("2020-03-10T00:00:00Z") } ] }
$dateToString প্রয়োগ করার কোয়ারী
$project স্টেজে $map ব্যবহার করে Details অ্যারের প্রতিটি এলিমেন্টের Deadline ফিল্ডকে "%m" ফরম্যাটে (মাস নম্বর) কনভার্ট করা হয়েছে:
> db.demo104.aggregate([
... { "$match": {} },
... { "$project": {
... "title": 1,
... "Details": {
... "$map": {
... "input": "$Details",
... "as": "out",
... "in": {
... "ClientName": "$$out.ClientName",
... "Deadline": {
... "$dateToString": { "format": "%m", "date": "$$out.Deadline" }
... }
... }
... }
... }
... }}
... ]);
ফলাফল
{ "_id" : ObjectId("5e2ed7fd9fd5fd66da21446f"), "Details" : [ { "ClientName" : "Chris", "Deadline" : "03" } ] }
ব্যাখ্যা:
$map- ইনপুট অ্যারের ($Details) প্রতিটি এলিমেন্ট ($$out) কে ট্রান্সফর্ম করে নতুন অ্যারে বানায়$$out.ClientName- মূল এলিমেন্টের ClientName কপি করা$dateToString- ডেট অবজেক্টকে নির্দিষ্ট ফরম্যাটে স্ট্রিংয়ে কনভার্ট করেformat: "%m"- মাস নম্বর (০১-১২)। অন্যান্য ফরম্যাট:%Y(বছর),%d(দিন),%H(ঘণ্টা),%M(মিনিট),%S(সেকেন্ড)
সাধারণ ডেট ফরম্যাট উদাহরণ:
| ফরম্যাট | ফলাফল (২০২০-০৩-১০) |
|---|---|
| %Y-%m-%d | 2020-03-10 |
| %d/%m/%Y | 10/03/2020 |
| %H:%M:%S | 00:00:00 |
| %Y-%m-%dT%H:%M:%S.%LZ | 2020-03-10T00:00:00.000Z |
নোট: $dateToString MongoDB 3.6+ এ উপলব্ধ। টাইমজোন সেট করতে timezone ফিল্ড যোগ করুন: {format: "%Y-%m-%d", date: "$$out.Deadline", timezone: "+06:00"}।