Фильтровать данные по определенным датам — mern

#mongodb #express #mongoose #mern

#mongodb #экспресс #мангуст #mern

Вопрос:

Здесь у меня есть даты (т.е. обновленные) с «2020-10-28T09:20: 14.335Z» и «2020-10-30T09: 20:35.086Z» . как я могу отфильтровать данные по определенной дате (например: 2020-10-28).

Данные с сервера

 [
    {
        "_id": "5f9bdace778082303c859248",
        "createdAt": "2020-10-28T09:20:14.335Z",
        "updatedAt": "2020-10-28T09:20:14.335Z",
        "__v": 0
    },
    {
        "_id": "5f9bdae3778082303c859249",
        "createdAt": "2020-10-30T09:20:35.086Z",
        "updatedAt": "2020-10-30T09:20:35.086Z",
        "__v": 0
    }
]
  

маршрут: он выдает пустой массив, как заставить его работать?

 Attendance.find({ "updatedAt": { "$gte": "2020-10-28", "$lte": "2020-10-28" } })
.then(data => res.json(data))
.catch(err => res.status(400).json('Error: '   err));
  

маршрут: но это работает

 Attendance.find({ "updatedAt": { "$gte": "2020-10-28T09:20:14.335Z", "$lte": "2020-10-28T09:20:14.335Z" } })
.then(data => res.json(data))
.catch(err => res.status(400).json('Error: '   err));
  

Ответ №1:

Один из способов использования агрегации

 db.collection.aggregate([
  {
    $addFields: {
      "updatedAt": {
        "$substr": [
          "$updatedAt",
          0,
          10
        ]
      }
    }
  },
  {
    $match: {
      "updatedAt": {
        "$gte": "2020-10-28",
        "$lte": "2020-10-28"
      }
    }
  }
])
  

Рабочая игровая площадка Mongo