MongoDB Stored Procedure (javascript function) that updates documents before it returns them as results?

StackOverflow https://stackoverflow.com/questions/3987709

Question

I'm in the process of converting a system from sql server to mongodb. I believe the project is a good candidate for mongodb, but that's not my question.

In the sql database, i have a stored procedure that I use to return a set of records that need processing. So, I have Processed BIT and LastProcessingRequestDate DATETIME fields in the sql database. Records take somewhere between 1 second and 5 minutes to process on the client side, before the client would Update the record to be Processed=1.

My stored procedure would return a TOP 100 records where Processed = 0 and LastProcessingRequestDate < DATEADD(minute, -10, NOW()), but before it returns each record, it would update LastProcessingRequestDate=NOW(). This would ensure that I don't get any records back that I'm already processing, before I've finished processing them (there is a single thread responsible for keeping a queue full of records to process, from which multiple threads dequeue from).

I'm wondering what the best practice would be to move this scenario over to MongoDB. One thought I had is to create a mongodb function which does something similar, but I've not seen any examples of this type of function. Another would be to simply use the same logic, but handle the updating of LastProcessingRequestDate on the client side. This seems less than ideal to me.

Does anyone have an example of how I could write a javascript function in mongodb to do this? Thanks!

Was it helpful?

Solution

I really think that some form of "client-side" or "business object / entity / data object" logic is in order here.

The other option is to basically build multiple collections and use those collection for story "to-process" items.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top