Един от начините да го направите е да присвоите уникален цифров идентификатор на всеки от вашите MongoDB документи и да присвоите уникален цифров идентификатор на всеки от вашите node.js работници.
Например, имайте env var, наречена NUM_WORKERS, и след това във вашия модул node.js:
var NumWorkers = process.env.NUM_WORKERS || 1;
След това трябва да присвоите уникален, непрекъснат идентификатор на номер на екземпляр (в диапазона от 0 до NumWorkers-1) на всеки от вашите работници (напр. чрез параметър на командния ред, прочетен от вашия процес node.js, когато се инициализира). Можете да го съхраните в променлива, наречена MyWorkerInstanceNum.
Когато изберете документ от MongoDB, извикайте следната функция (предавайки уникалния documentId на документа като параметър):
function isMine(documentId){
//
// Example: documentId=10
// NumWorkers= 4
// (10 % 4) = 2
// If MyWorkerInstanceNum is 2, return true, else return false.
return ((documentId % NumWorkers) === MyWorkerInstanceNum);
}
Продължете действително да обработвате документа само ако isMine() върне true. Така че няколко работници могат да "изберат" документ, но само един работник ще го обработи действително.