hai quasi azzeccato.
Per ottenere gli ultimi 30 valori, usa invece meno. Nel tuo caso, puoi fare qualcosa come:
Device.findOne({ device_id: deviceId }, { movements: { $slice: -30 } }, (err, device) => {
....
})
Spero di esserti stato d'aiuto.