I'm trying to compare two arrays of hashes, and delete old records. stale_records
are records from old_records
that don't exist in new_records
. Items in the array can be duplicated.
old_records = [{a: 1}, {b: 2}]
new_records = [{a: 1}]
stale_records = #=> [{:b=>2}]
old_records = [{a: 1}, {a: 1}]
new_records = [{a: 1}]
stale_records #=> [{a: 1}]
I am wondering if there an efficient way for a few million records.
I tried:
old_records = [{a: 1}, {b: 2}]
new_records = [{a: 1}]
stale_records = old_records - new_records #=> [{:b=>2}]
old_records = [{a: 1}, {a: 1}]
new_records = [{a: 1}]
stale_records = old_records - new_records #=> []
which does not give the correct result when items are duplicated.