prawie to przybiłeś.
Aby uzyskać ostatnie 30 wartości, użyj zamiast tego minus. W Twoim przypadku możesz zrobić coś takiego:
Device.findOne({ device_id: deviceId }, { movements: { $slice: -30 } }, (err, device) => {
....
})
Mam nadzieję, że to pomogło.