मैं जानता हूँ कि यह एक पुराने सवाल है, लेकिन मैं भावी पीढ़ी के लिए मेरा उत्तर पोस्ट करेगा ...
यह एसवाई पर निर्भर करता है स्टेम जिसे आप बना रहे हैं और विशेष व्यवसाय नियम हैं।
मैं मोंगो डीबी, सी # (बैकएंड एपीआई), और कोणीय (फ्रंटएंड वेब ऐप) में मध्यम से बड़े पैमाने पर सीआरएम का निर्माण कर रहा हूं और ऑब्जेक्टआईड को विशेष इकाइयों का चयन करने के लिए कोणीय रूटिंग में उपयोग के लिए पूरी तरह से भयानक पाया। एपीआई नियंत्रक रूटिंग के साथ ही।
उपर्युक्त सुझाव मेरे प्रोजेक्ट के लिए पूरी तरह से काम करता है।
db.contacts.insert({
"id":db.contacts.find().Count()+1,
"name":"John Doe",
"emails":[
"[email protected]",
"[email protected]"
],
"phone":"555111322",
"status":"Active"
});
कारण यह मेरे मामले के लिए एकदम सही है, लेकिन सभी मामलों है कि ऊपर टिप्पणी राज्यों के रूप में, यदि आप संग्रह से 3 रिकॉर्ड हटाते हैं, तो टकराव हो जाएगा है।
मेरे व्यवसाय के नियम बताते हैं कि हमारे घर एसएलए के कारण, हमें पत्राचार डेटा या क्लाइंट रिकॉर्ड को उस एप्लिकेशन के संभावित जीवनकाल से अधिक समय तक हटाने की अनुमति नहीं है, और इसके लिए, मैं बस रिकॉर्ड के साथ रिकॉर्ड चिह्नित करता हूं enum "स्थिति" जो या तो "सक्रिय" या "हटाया गया" है। आप यूआई से कुछ हटा सकते हैं, और यह कहेंगे "संपर्क हटा दिया गया है" लेकिन सभी आवेदन किए गए हैं, संपर्क की स्थिति को "हटाया गया" में बदल दिया गया है और जब ऐप संपर्कों की सूची के लिए श्वसन को कॉल करता है, तो मैं फ़िल्टर करता हूं क्लाइंट ऐप में डेटा को धक्का देने से पहले हटाए गए रिकॉर्ड हटाएं।
इसलिए, db.collection.find()। गणना() + 1 मेरे लिए एक आदर्श समाधान है ...
यह हर किसी के लिए काम नहीं करेगा, लेकिन आप डेटा को नहीं हटा रहे हैं, तो यह ठीक काम करता है।
मैं आपकी तरह की एक ही समस्या को पूरा करता हूं, बिटसेट स्थिति सेट करने के लिए आईडी कैसे उत्पन्न करें। क्या आपने इस समस्या को हल किया? – brucenan