У меня есть следующее приложение.Требовалось (FreeCodeCamp) возвращать коллекцию упражнений по датам и период времени (длительность) с _id и запросом на совпадение имени пользователя в URL.
Я пытался выполнить следующие действия:
- Использование агрегата с с
$match
для поиска _id в запросе. - Размотка массива данных с помощью
$unwind
.
Url:
http://localhost:3000/api/exercise/log21?id=eUyhCDgMB&start=31 December 2018&end=22 December 2018&limit=2
let iniate = new Date(req.query.start);
let one = moment(iniate).format("YYYY-MM-DDT00:00:00.000") + "Z";
let date1 = new Date(one);
console.log(date1);
console.log(typeof(date1));
let iniate1 = new Date(req.query.end);
let two = moment(iniate1).format("YYYY-MM-DDT00:00:00.000") + "Z";
let date2 = new Date(two);
console.log(date2)
console.log(typeof(date2))
app.get('/api/exercise/log21', (req, res) => {
array.aggregate([{
$match: {
'_id': req.query.id
}
}, {
$unwind: "$data"
}]).then(doc => {
res.send(doc)
}).catch(e => {
res.send(e);
})
})
JSON вернул
[{
"_id": "eUyhCDgMB",
"username": "Donald Duck",
"data": {
"description": "walking",
"duration": 2,
"date": "2019-01-01T00:00:00.000Z"
},
"__v": 0
},
{
"_id": "eUyhCDgMB",
"username": "Donald Duck",
"data": {
"description": "Mountain Biking",
"duration": 3,
"date": "2019-01-01T00:00:00.000Z"
},
"__v": 0
},
{
"_id": "eUyhCDgMB",
"username": "Donald Duck",
"data": {
"description": "Reading",
"duration": 3,
"date": "2018-12-31T00:00:00.000Z"
},
"__v": 0
}
]
Мне нужно отфильтровать все даты, не соответствующие запросу в URL, и вернуть даты, соответствующие запросу, с именем пользователя, идентификатором, описанием, продолжительностью и датами сопоставления для запроса.Показано в моем коде localhost 3000. Чтобы получить запрос даты от строки к объекту даты, я использую moment.js.Как показано в моем коде с переменными date1
и date2
.
Я пытаюсь установить $gte
равным date1
и $lte
равным $end=date2
Если лимит установлен меньше возвращаемых датМне нужно вернуть количество дат, установленных в URL.Примерный предел = 2.Вернуть только два совпадающих значения даты.