Die Schlüsselfunktion von MongoDB in diesem Bereich ist, dass ein Update auf eine einzelne Dokument ist atomar. Aus den Dokumenten :
Also für Ihr Update von:
db.collection.update({done: false, taken: false},{$set: {taken: true, takenBy: myIp}});
Das bedeutet, dass es automatisch ein Dokument findet, das den Kriterien entspricht, und es dann aktualisiert. Also ja, das wird gut funktionieren, um einem bestimmten Server eine Aufgabe zuzuweisen.
Siehe diesen anderen Beitrag
Weitere Informationen zum Implementieren einer gemeinsam genutzten Arbeitswarteschlange in MongoDB. Ein wichtiger Punkt, der dort erwähnt wird, ist die Verwendung von findAndModify
um sowohl das Update als auch durchzuführen das aktualisierte Dokument zurücksenden.