Запрос данных в базе данных mongoose - PullRequest
0 голосов
/ 20 марта 2019

В настоящее время я пытаюсь выполнить запрос данных, чтобы он возвращал только элементы с идентификатором bWYqm6-Oo (у меня есть только 1 элемент на данный момент) между двумя конкретными датами 2019-09-19 и 2019-09-22 , В этом случае он должен возвращать только первые 3 элемента в базе данных. Я пришел с запросом, но он возвращает только пустой массив. Кто-нибудь знает, как решить эту проблему? Заранее спасибо.

var findBy = {
    _id : bWYqm6-Oo,
    exercises : [
      {
        date: {
          $gte: 2019-09-19,
          $lt: 2019-09-22
        }
      }
    ]
  }
  UserModel.find(findBy).limit(5).exec((err, data) => {
      (err) ? res.json({"error" : "problem searching for exercises: " + err}) :  res.json(data);      
  });

Моя база данных выглядит так:

{
    _id: "bWYqm6-Oo",
    user: "rommy",
    exersises: [
        {
        user_id: "bWYqm6-Oo",
        date: "2019-09-20T00:00:00.000Z",
        description: "stiup",
        duration: "22",
        _id: "pu90D-dHx"
        },
        {
        user_id: "bWYqm6-Oo",
        date: "2019-09-21T00:00:00.000Z",
        description: "pushup",
        duration: "22",
        _id: "YtfsJLOXb"
        },
        {
        user_id: "bWYqm6-Oo",
        date: "2019-09-20T00:00:00.000Z",
        description: "stiup",
        duration: "22",
        _id: "pu90D-dHx"
        },
        {
        user_id: "bWYqm6-Oo",
        date: "2019-09-24T00:00:00.000Z",
        description: "stiup",
        duration: "22",
        _id: "pu90D-dHx"
        }
    ],
    __v: 9
}

Вот где я вызываю мои файлы в файле server.js:

1 Ответ

0 голосов
/ 20 марта 2019

Несколько вещей:

Поле _id в документе всегда уникально в монго, поэтому в вашем запросе

var findBy = {
    _id : bWYqm6-Oo,
    exercises : [
      {
        date: {
          $gte: 2019-09-22,
          $lt: 2019-09-22
        }
      }
    ]
  }

Эта часть избыточна

exercises : [
      {
        date: {
          $gte: 2019-09-22,
          $lt: 2019-09-22
        }
      }
    ]

потому что будет только один документ с _id из 'bWYqm6-Oo'

Если вы хотите сделать запрос, используя диапазон дат, вы можете сделать что-то вроде этого:

var query = {
  'exercises.date': {$gte: '2019-09-22', $lt: '2019-09-22'}
}

Надеюсь, это поможет.

...