MongoDB एग्रीगेशन का उपयोग करके दो तिथियों के बीच घंटों में अंतर गणना करना
एग्रीगेशन पाइपलाइन में, $subtract का उपयोग दो तिथियों के बीच अंतर (मिलीसेकंड में) प्राप्त करने के लिए करें, फिर घंटे प्राप्त करने के लिए 3,600,000 (एक घंटे में मिलीसेकंड) से विभाजित करें।
नमूना डेटा बनाना
> db.timestampDifferenceDemo.insertOne({
"MovieBeginningTime": new ISODate("2019-05-12 10:20:30"),
"MovieEndingTime": new ISODate("2019-05-12 12:30:20")
});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd7ba1f6d78f205348bc644") }
> db.timestampDifferenceDemo.insertOne({
"MovieBeginningTime": new ISODate("2019-05-12 04:00:00"),
"MovieEndingTime": new ISODate("2019-05-12 07:10:00")
});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd7ba3b6d78f205348bc645") }
सभी डॉक्यूमेंट्स देखना
> db.timestampDifferenceDemo.find().pretty();
आउटपुट:
{ "_id" : ObjectId("5cd7ba1f6d78f205348bc644"), "MovieBeginningTime" : ISODate("2019-05-12T10:20:30Z"), "MovieEndingTime" : ISODate("2019-05-12T12:30:20Z") }
{ "_id" : ObjectId("5cd7ba3b6d78f205348bc645"), "MovieBeginningTime" : ISODate("2019-05-12T04:00:00Z"), "MovieEndingTime" : ISODate("2019-05-12T07:10:00Z") }
घंटों में अंतर गणना करना
> db.timestampDifferenceDemo.aggregate([
{
$project: {
DifferenceInHours: {
$divide: [
{ $subtract: [ "$MovieEndingTime", "$MovieBeginningTime" ] },
3600000
]
}
}
}
]);
आउटपुट:
{ "_id" : ObjectId("5cd7ba1f6d78f205348bc644"), "DifferenceInHours" : 2.1638888888888888 }
{ "_id" : ObjectId("5cd7ba3b6d78f205348bc645"), "DifferenceInHours" : 3.1666666666666665 }
व्याख्या
$subtract: [ end, start ]- मिलीसेकंड में अंतर लौटाता है।$divide: [ diffMs, 3600000 ]- मिलीसेकंड को घंटों में परिवर्तित करता है (1000 × 60 × 60 = 3,600,000)।- पहली फिल्म: ~2 घंटे 9 मिनट 50 सेकंड = 2.1639 घंटे।
- दूसरी फिल्म: 3 घंटे 10 मिनट = 3.1667 घंटे।
अन्य समय इकाइयाँ
| इकाई | डिवाइजर |
|---|---|
| मिलीसेकंड | 1 |
| सेकंड | 1000 |
| मिनट | 60000 |
| घंटे | 3600000 |
| दिन | 86400000 |
पूर्ण संख्या घंटे (फ्लोर) के लिए
{ $project: {
Hours: { $floor: { $divide: [ { $subtract: ["$end", "$start"] }, 3600000 ] } }
}}
मुख्य बिंदु
- तिथि घटाव मिलीसेकंड में परिणाम देता है।
- वांछित इकाई प्राप्त करने के लिए उपयुक्त मिलीसेकंड मान से विभाजित करें।
- पूर्ण इकाइयों के लिए
$floor,$ceil, या$roundका उपयोग करें। - यह एग्रीगेशन परिणामों को प्रोजेक्ट करता है; मूल डॉक्यूमेंट्स को संशोधित नहीं करता है।