2016-12-14 6 views
0

Вот мои данные:Как рассчитать временную разницу в mongodb (в часах)?

[ 
    { 
     id: 1, 
     starttime: ISODate("2015-08-24T00:00:00.000Z"), 
     endtime: ISODate("2015-08-24T07:00:00.000Z") 
    }, 
    { 
     id: 2, 
     starttime: ISODate("2015-08-24T20:00:00.000Z"), 
     endtime: ISODate("2015-08-25T01:00:00.000Z") 
    } 
] 

я могу сделать MongoDB запрос для отображения длительности (или в данном случае операция разности) STARTTIME и EndTime с результатами, как:

[ {id:1, duration: 7}, {id: 2, duration: 5}] 

Обратите внимание, что метка времени может имеют разную дату, поэтому $hour (агрегационный конвейер) может не работать. Может ли кто-нибудь помочь? Спасибо

+0

Вы можете использовать проектор с $ вычесть: {$ Проект: {_id: '$ ID', продолжительность: {$ вычитать: [ '$ время окончания', '$ STARTTIME']}}}, – Yoleth

+0

Пробовал, что результат: [{id: 1, duration: null}, {id: 2, duration: null}] – DennyHiu

+0

Извините, у меня есть неправильное имя переменной, $ subtract works, вот результат: [{id: 1, продолжительность: 25200000}, {id: 2, продолжительность: 18000000}]. это в секундах? – DennyHiu

ответ

2
db.collectionname.aggregate([ 
    {$project: { 
     duration: {$divide: [{$subtract: ["$endtime", "$starttime"]}, 3600000]} 
    }} 
]) 
Смежные вопросы