tu as presque réussi.
Pour obtenir les 30 dernières valeurs, utilisez simplement moins à la place. Dans votre cas, vous pouvez faire quelque chose comme :
Device.findOne({ device_id: deviceId }, { movements: { $slice: -30 } }, (err, device) => {
....
})
J'espère que cela a aidé.