Uma maneira de fazer isso é atribuir um ID numérico exclusivo a cada um de seus documentos do MongoDB e atribuir um identificador numérico exclusivo a cada um de seus workers do node.js.
Por exemplo, tenha um env var chamado NUM_WORKERS e, em seguida, em seu módulo node.js:
var NumWorkers = process.env.NUM_WORKERS || 1;
Em seguida, você precisa atribuir um ID de número de instância exclusivo e contíguo (no intervalo de 0 a NumWorkers-1) a cada um de seus trabalhadores (por exemplo, por meio de um parâmetro de linha de comando lido pelo processo node.js quando ele é inicializado). Você pode armazenar isso em uma variável chamada MyWorkerInstanceNum.
Ao escolher um documento do MongoDB, chame a seguinte função (passando o documentId exclusivo do documento como parâmetro):
function isMine(documentId){
//
// Example: documentId=10
// NumWorkers= 4
// (10 % 4) = 2
// If MyWorkerInstanceNum is 2, return true, else return false.
return ((documentId % NumWorkers) === MyWorkerInstanceNum);
}
Apenas continue a processar o documento se isMine() retornar true. Assim, vários trabalhadores podem "escolher" um documento, mas apenas um trabalhador realmente o processará.