Я использую NodeJS и Mon goose для записи некоторых конечных точек. Следующий код в настоящее время работает должным образом. Он возвращает массив результатов из моей базы данных, где каждый результат состоит из идентификатора и массива значений, который выглядит следующим образом:
**[ { _id: 'Kitchen', values: [ 60, 60, 60, 60, 54 ] },
{ _id: 'My Desk', values: [ 40, 40 ] },
{ _id: 'Server Room', values: [ 50, 50, 50 ] } ]**
В настоящее время я пытаюсь выяснить, как ограничить размер помещенного массива не более 30 новейших записей. Я считаю, что мне нужно каким-то образом использовать splice, но я вполне могу заставить это работать. Вот код, который я сейчас использую:
router.get("/api/getsensordata/", function (req, res) {
let sensorNames = req.query.sensornames.split(",");
let device = SensorData.aggregate([
{
$match: { sensorName: { $in: sensorNames } },
},
{
$group: {
_id: "$sensorName",
values: {
$push: "$sensorValue",
},
},
},
])
.sort({ _id: "ascending" })
.exec(function (err, results) {
if (err) {
res.send("an error has occured");
} else {
console.log(results);
res.json(results);
}
});
});
Есть ли у кого-нибудь идеи о том, как go достичь этого?