Den viktigaste MongoDB-funktionen i detta område är att en uppdatering till en singel dokumentet är atomärt. Från dokumenten :
Så för din uppdatering av:
db.collection.update({done: false, taken: false},{$set: {taken: true, takenBy: myIp}});
detta betyder att den kommer att hitta ett dokument som matchar kriterierna och sedan uppdatera det. Så ja, det kommer att fungera bra att tilldela en uppgift till en given server.
Se det här andra inlägget
för mer information om implementering av en delad arbetskö i MongoDB. En viktig punkt som nämns där är användningen av findAndModify
för att både utföra uppdateringen och returnera det uppdaterade dokumentet.