Как я могу запросить mongoDB на основе диапазона дат, используя узел? - PullRequest
0 голосов
/ 12 марта 2020

Я понимаю, что таких вопросов уже много, но все ответы, которые я видел, не относятся к моей ситуации. Поэтому, пожалуйста, потерпите меня.

У меня есть этот запрос, который сейчас работает:

let query = [
        {
            $match: { 
              'cityState': cityState,
              'userId': userId
            }
        }];

Вот как выполняется запрос:

Review.aggregate(query,function(err,response){

Я новичок в сети, так что я не совсем знаю, какой инструмент я использую выше. Я бы хотел изменить приведенный выше запрос так, чтобы в качестве входных данных использовались две даты и возвращались отзывы, соответствующие всем параметрам. У объекта Review есть поле GivenDate, с которым я бы хотел сравнить. Таким образом, запрос должен возвращать все обзоры, которые имеют данный параметрDate между двумя указанными мной датами и которые совпадают с cityState и userId.

Что мне нужно сделать с запросом, чтобы эта работа работала? Даты, которые я передаю, имеют следующий формат: 2019-08-21T07: 04: 48.263Z

1 Ответ

2 голосов
/ 13 марта 2020

Для сравнения, значения базы данных и введенные данные должны быть одного типа данных. В этом случае преобразуйте строковые входы в объекты даты и используйте их в запросе к диапазону дат в базе данных

let inputDateFrom = new Date(inputDate1) // inputDate1 is a string
let inputDateTo = new Date(inputDate2)

let query = [
  {
      $match: { 
          'givenDate': { $gte: inputDateFrom, $lte: inputDateTo },
          'cityState': cityState,
          'userId': userId
      }
  }
];


Вот пример запроса поля даты с диапазоном дат: Запрос для диапазонов .

...