ऐसा करने का एक तरीका यह है कि आप अपने प्रत्येक MongoDB दस्तावेज़ को एक अद्वितीय संख्यात्मक आईडी असाइन करें, और अपने प्रत्येक नोड.जेएस कार्यकर्ता को एक अद्वितीय संख्यात्मक पहचानकर्ता असाइन करें।
उदाहरण के लिए, NUM_WORKERS नामक एक env var रखें, और फिर अपने node.js मॉड्यूल में:
var NumWorkers = process.env.NUM_WORKERS || 1;
फिर आपको अपने प्रत्येक कार्यकर्ता को एक अद्वितीय, सन्निहित इंस्टेंस नंबर आईडी (रेंज 0 से NumWorkers-1 में) असाइन करने की आवश्यकता है (उदाहरण के लिए आपके नोड.जेएस प्रक्रिया द्वारा पढ़े जाने वाले कमांड लाइन पैरामीटर के माध्यम से जब यह प्रारंभ होता है)। आप इसे MyWorkerInstanceNum नाम के वेरिएबल में स्टोर कर सकते हैं।
जब आप MongoDB से कोई दस्तावेज़ चुनते हैं, तो निम्न फ़ंक्शन को कॉल करें (दस्तावेज़ के अद्वितीय दस्तावेज़ को एक पैरामीटर के रूप में पास करते हुए):
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() सत्य लौटाता है। इसलिए, कई कर्मचारी दस्तावेज़ को "चुन" सकते हैं, लेकिन केवल एक कार्यकर्ता वास्तव में इसे संसाधित करेगा।