On update, _rev is reassigned with a random 4 byte number. This is to prevent older versions of the data from being updated. However, there is a slight chance that _rev will be assigned the same 4 bytes as its previous _rev. If you try to update an older version of the data, it will succeed.
The chance of this happening is 1 / (65536 * 65536) = 1 / 4294967296. However, if you have multiple version of the data open, the collisions will increase cumulatively. If you have 10 older versions open, the risk of _rev collision will be 10 times as likely.
_rev should be guaranteed unique, older versions of data should not be able to be updated.