Given a set of modified records and an original set of records. I want to be able to write a query that will essentially give me the set difference from the original "set" to the modified "set".
So given two sets, original and modified like so:
{ "_id" : 1, "set": "original", "key" : "foo", "element" : "bar" }
{ "_id" : 2, "set": "original", "key" : "bar", "element" : "old" }
{ "_id" : 3, "set": "original", "key" : "qux", "element" : "abc" } # Deleted
{ "_id" : 4, "set": "modified", "key" : "foo", "element" : "bar" } # Unchanged
{ "_id" : 5, "set": "modified", "key" : "bar", "element" : "new" } # Changed
{ "_id" : 6, "set": "modified", "key" : "baz", "element" : "bar" } # Created
I want to get some sort of result from the difference query that either looks like a cursorable set of documents, like:
{ "_id" : 3, "deleted": True}
{ "_id" : 5, "changed": True}
{ "_id" : 6, "created": True}
Or less ideal (only because it's not as cursor-able):
{
"deleted": [3],
"changed": [5],
"created": [6]
}
I'm not restricted to result formats, but rather just want to figure out how to do this calculation and want to demonstrate what I'm looking for.
I see that Mongo has a $setDifference feature, but I'm having trouble applying it to my problem.