Как правильно работать с ISODate в Mongoose

#node.js #mongodb #mongoose

#node.js #mongodb #mongoose

Вопрос:

Я пытаюсь вызвать коллекцию mongodb с помощью mongoose, но у меня возникают проблемы с использованием дат в вызове

 const siteReviews = await Review.countDocuments({
  'clientId': clientObj.ClientBrandID, 
  'siteSource': 'SomeSite', 
  'reviewDate':{
      $gt:"2018-12-24T18:04:47.806Z",
      $lt:"2019-04-03T17:04:47.806Z"
  }
})
  

Я точно знаю, что у меня есть данные между этими двумя датами, но я получаю 0 обратно.Я также пытался использовать ISODate («») непосредственно в коде, но это приводит к сбоям

Ответ №1:

На самом деле, вы определили type из reviewDate поля как Date в вашей схеме, и здесь вы передаете его как String .

Итак, в основном вам нужно преобразовать String дату в Date объект, и это можно легко сделать с помощью moment библиотеки

 const googleReviews = await Review.countDocuments({
  clientId: clientObj.ClientBrandID,
  siteSource: "SomeSite",
  reviewDate: {
    $gt: moment("2018-12-24T18:04:47.806Z").toDate(),
    $lt: moment("2019-04-03T17:04:47.806Z").toDate()
  }
});