MongoDB Stored Procedure (javascript function) that updates documents before it returns them as results?
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.
I开发者_运维知识库n 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!
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.
精彩评论