MongoDB में तिथि अंतर की गणना और सबसे लंबी अवधि ढूंढना
दो तिथि स्ट्रिंग फ़ील्ड्स (startDate, endDate) के बीच अंतर मिलीसेकंड में निकालने के लिए $toDate (स्ट्रिंग→Date), $subtract (अंतर), फिर $sort और $limit: 1 द्वारा सबसे लंबी अवधि वाला दस्तावेज़ प्राप्त करें।
नमूना डेटा
> db.demo344.insertOne({"startDate": "2020-02-24 10:50:00", "endDate": "2020-02-24 11:50:00"});
{ "acknowledged": true, "insertedId": ObjectId("5e53f52cf8647eb59e5620aa") }
> db.demo344.insertOne({"startDate": "2020-02-24 08:00:00", "endDate": "2020-02-24 11:50:50"});
{ "acknowledged": true, "insertedId": ObjectId("5e53f53df8647eb59e5620ab") }
एग्रीगेशन: सबसे लंबी अवधि
> db.demo344.aggregate([
{$addFields: {longestTime: {$subtract: [{$toDate: "$endDate"}, {$toDate: "$startDate"}]}}},
{$sort: {longestTime: -1}},
{$limit: 1}
]);
परिणाम
{ "_id": ObjectId("5e53f53df8647eb59e5620ab"), "startDate": "2020-02-24 08:00:00", "endDate": "2020-02-24 11:50:50", "longestTime": NumberLong(13850000) }
दूसरा दस्तावेज़ (3 घंटे 50 मिनट 50 सेकंड = ~13,850,000 ms) सबसे लंबा है। $toDate ISODate स्ट्रिंग्स को पार्स करता है। NumberLong 64-बिट पूर्णांक दर्शाता है।