Как получить документы с созданием более 48 часов в мангусте - PullRequest
0 голосов
/ 10 апреля 2020

Мне нужно получить документы, где метка времени созданного времени более 48 часов в пн goose.

Ниже приведен мой пример кода, но он не получает никаких документов, даже если есть документы, которые соответствуют условие.

Model.find({
    createdAt: { $lt: new Date(Date.now() - 2 * 24 * 60 * 60 * 1000) },
});

NB. Поле selectedAt является значением по умолчанию в пн goose, когда включена отметка времени { timestamps: true }

Я был бы очень признателен, если кто-то может помочь, спасибо заранее.

Ответы [ 3 ]

0 голосов
/ 10 апреля 2020

Попробуйте

var days= 2;
var date = new Date(date.setDate(date.getDate() - days));

Model.find({createdAt : {$lt : date}}).count());
0 голосов
/ 10 апреля 2020

Спасибо всем, кто пытался помочь.

Мое решение выше работает, я не получал никаких записей в то время, потому что не зная, что мой файл env указывает на другой сервер MongoDB.

0 голосов
/ 10 апреля 2020

С интегрированной средой MongoDB у нас есть доступ $$ NOW (Автономный) | $$ CLUSTER_TIME (Cluster) переменная, которая возвращает текущую дату.

Если мы вычтем 172800000 миллисекунд (48 часов) из текущей даты и используем оператор $expr, мы можем получить желаемый результат.

Попробуйте это:

Model.aggregate([
  {
    $match: {
      $expr: {
        $gte: [
          "$createdAt",
          {
            $toDate: {
              $subtract: [
                {
                  $toLong: "$$CLUSTER_TIME"
                },
                172800000 // 2 x 24 x 60 x 60 x 1000
              ]
            }
          }
        ]
      }
    }
  }
]).exec();

MongoPlayground

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...