MongoDb автоматически обновляет данные через указанное количество раз

У меня есть объект MongoDb, например

{
  "_id": 1.
  "updateAfter":"2021-06-28T03:31:53.000Z",
  "isPassed": false
}

Я хочу обновить "isPassed": true после указанного времени "updateAfter".

Допустим, текущее время 29 мая, 12:30. updateAfter : 30 May 10: 50 am. Я пытаюсь isPassed: true, когда текущее время превышает 30 мая (или больше, чем текущее время).

Возможно ли это с процессом MongoDB TTL indexing или любой другой идеей, такой как процесс time scheduler?

Как я могу это сделать?

заранее спасибо

См. также:  Newman не распознается как внутренняя или внешняя команда в Jenkins в Windows 10
Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 1
  1. Mijanur Rahman

    Вы можете использовать агрегацию update()

     db.collection.update({},
    [
      {
        $set: {
          isPassed: {
            $gte: [
              "$updateAfter",
              {
                $toString: new Date()
              }
            ]
          }
        }
      }
    ])
    

    Работает MongoDB

    Здесь вы имели в виду агрегацию как структуру агрегации или нет? person Mijanur Rahman; 29.05.2021

    Да, вы можете ссылаться на docs.mongodb.com/manual/ учебник/ person Mijanur Rahman; 29.05.2021

    Могу ли я использовать myModel.findOneAndUpdate({}) без обновления? person Mijanur Rahman; 29.05.2021

    Где я использую isPassed: true в вашем запросе? person Mijanur Rahman; 29.05.2021

    пройдёте ли вы updateAfter? person Mijanur Rahman; 29.05.2021

    да. Но вы используете 2021-07-28T03:31:53.000Z — это текущее время? Мой запрос должен проверить, что текущее время (время выполнения или машинное время) больше, чем время updateAfter. person Mijanur Rahman; 29.05.2021

    Таким образом, вы можете легко пройти new Date(), не так ли?. не знаю насчёт мангуста person Mijanur Rahman; 29.05.2021

    В основном новая дата — это текущая дата. Но я пытаюсь сказать, что проверяю время между updateAfter и текущим машинным временем. Вы проверяете между двумя фиксированными значениями. Но я хочу запросить значение ограничения по времени. В основном, когда текущее время будет больше, чем updateAfter, тогда isPassed: true. person Mijanur Rahman; 29.05.2021

    Потому что после запуска сервера или запроса mongoDb переменная new Date() не будет обновляться. Итак, как я могу проверить, что текущее время больше, чем время updateAfter? person Mijanur Rahman; 29.05.2021

    Нет, что я пытаюсь сказать, если вы можете передать текущую дату и время в $gte: [ "$updateAfter", // set the date time here ], иногда это может помочь получить текущую дату [stackoverflow.com/questions/7675549/ person Mijanur Rahman; 29.05.2021

    Вам нужно передать текущую дату и время в запрос person Mijanur Rahman; 29.05.2021

    Когда я нажимаю новую дату(). Доза не обновляется после. Итак, как мне проверить, что текущее время больше, чем время updateAfter. Могу ли я использовать функции типов seTimeOut или setInterval в MongoDb? person Mijanur Rahman; 29.05.2021

    можешь показать как ты поставил? person Mijanur Rahman; 29.05.2021

    Я обновил ответ, пожалуйста, посмотрите person Mijanur Rahman; 29.05.2021

    Я думаю, что не могу правильно объяснить вам проблему. Допустим, текущее время 29 мая, 12:30. ОбновлениеПосле: 30 мая 10: 50 утра. Это всегда верно, потому что updateAfter всегда больше, когда мы помещаем данные в базу данных. Но я пытаюсь isPassed: true, когда текущее время превышает 30 мая (или больше текущего времени). person Mijanur Rahman; 29.05.2021

    Я также обновляю вопрос. person Mijanur Rahman; 29.05.2021

    Давайте продолжим обсуждение в чате. person Mijanur Rahman; 30.05.2021

    Пожалуйста, проголосуйте за мой вопрос. person Mijanur Rahman; 05.06.2021

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: