você quase acertou.
Para obter os últimos 30 valores, basta usar menos. No seu caso, você pode fazer algo como:
Device.findOne({ device_id: deviceId }, { movements: { $slice: -30 } }, (err, device) => {
....
})
Espero que tenha ajudado.
Device.findOne({ device_id: deviceId }, { movements: { $slice: -30 } }, (err, device) => {
....
})