Is there a way to update (or delete) many documents matching a certain criteria and get the list of IDs of actually updated/deleted documents (or some other fields of those documents)? I cannot simply query the documents matching my criteria beforehand because I need kinda atomicity for this operation. And I can’t use findAndModify because it can only process one document at a time which is too slow because of round-trips. Suggestions?
Share
MongoDB only supports atomic operations on a single document.
http://www.mongodb.org/display/DOCS/Atomic+Operations
The only way to do this is to do what you said you didn’t one to:
First query the collection to find id’s for our query:
Then, use the same query to remove:
Not ideal, and not atomic, but it’s as good as you’re going to get in this scenario.