Как я могу вычесть время в одном документе документа (MongoDB)? - PullRequest
0 голосов
/ 18 октября 2018

Я создал одну коллекцию, используя концепцию массива.

use test
db.time.insert({ "employeeid" : 1, "timing" : [{var : "temp", timein: new Date(), timeout: new Date()}]})

После создания документа я обновляю время ожидания через 5 минут.

db.time.update({"employeeid" : 1, "timing.var" : "temp"},{$set : {"timing.$.timeout" : new Date()}})

У меня два запроса.

1) я могу сохранить только время (чч: мм: сс) в timein, в файлах тайм-аутов?

2) как я могу вычесть значения тайм-аута субдокументов?

1 Ответ

0 голосов
/ 18 октября 2018

Вот мои дубли:

1) Могу ли я сохранить только время (чч: мм: сс) в timein, в файлах тайм-аутов?

Нет, вы не можете 'т.Поле типа даты всегда будет полной датой.Тем не менее, во время чтения вы можете выбрать чтение только чч мм и его часть, например:

d.getHours()
d.getMinutes()

, но это звучит слишком сложно.Лучшее, что я могу предложить, это использовать миллисекунды.Пользователь хранит и читает определенное время в timeInMillies вместо типа Date.Имея поле NumberLong в mongo, его будет проще сравнивать, складывать, вычитать, а во время чтения вы можете преобразовать его обратно в Date.


2) как я могу вычесть значение тайм-аута субдокумента?

Если вы хотите, чтобы миллисекунды убрали, делите мои 1000

db.time.aggregate([
    {
       $unwind:"$timing"
    },
    {
       $project:{
          diff:{
             $divide:[
                {
                   $subtract:[
                      "$timing.timeout",
                      "$timing.timein"
                   ]
                },
                1000
             ]
          }
       }
    }
])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...