@MarkAdler's answer explains why you are getting a hash collision. But if I were in your shoes, I'd be more interested in what I could do about it.
What you could do, of course, is use a different hashing algorithm that produces longer hashes (less chance of collision), but is still acceptably fast. You'll find a highly-rated review of several alternatives in this question from programmers.stackexchange.com. They all have collisions (coincidentally CRC32 did pretty well in that answer's test sets), but you could try some of them on mongoids and see what happens.
I also found this clever suggestion: To generate a 64-bit hash, you could take two different 32-bit hash algorithms and concatenate the hashes (of course this will more or less halve the speed of your hashing).
The more robust solution would be to write your code with the understanding that a hash is a bucket, and you will sometimes get multiple results (or the wrong result) from a crc32 query. Simply add a second step to check the unhashed Id(s) of the returned records. Since there's only ever going to be a handful of hits, it won't take long at all.