MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

मोंगोज़ का उपयोग करके मोंगोडब के थोक संचालन से संशोधित आईडीएस प्राप्त करने का कोई तरीका?

वैसे एक दृष्टिकोण से उत्तर "नहीं" है और उसके लिए एक बहुत अच्छा कारण है।

आम तौर पर बोलते हुए, मोंगोडीबी "अपडेट" ऑपरेशंस का उद्देश्य आम तौर पर "एकाधिक" दस्तावेज़ों में काम करना है, इसलिए जो भी मानदंड से मेल खाता है उसका अर्थ है। तो यहां सामान्य मामला यह है कि आपने या तो एकवचन में अपडेट करने के लिए कहा था या चयन द्वारा या तो अपडेट किया गया था या नहीं, इस पर निर्भर करता है कि कुछ भी मेल खाता था या नहीं।

"बल्क" संदर्भ में, बहुत कुछ एक ही बात लागू होती है, जिसमें या तो एक मानदंड मेल खाता था या नहीं, इस स्थिति में आपको nMatched के लिए दिए गए मान प्राप्त होंगे और nModified संभावित रूप से, क्योंकि इस बात की भी संभावना है कि एक "मिलान" दस्तावेज़ वास्तव में अपडेट नहीं किया गया है जहां संशोधित किया जाने वाला डेटा पहले से ही वह मान है जो संशोधन का लक्ष्य है।

nMatched . के बीच वह अंतिम अंतर और nModified यही मुख्य कारण है कि "आप विश्वसनीय रूप से ऐसा नहीं कर सकते" , चूंकि मेल खाने वाली हर चीज़ आवश्यक रूप से संशोधित नहीं होती है।

हालांकि आप एक अतिथि बना सकते हैं "अपरर्ट" क्रियाओं और वास्तविक "अपडेट" के बीच समझदारी के मामले में मूल्य। विख्यात अंतर के कारण यह 100% सटीक नहीं होगा, लेकिन मूल प्रक्रिया आपकी इनपुट सूची की तुलना getUpsertedIds() से लौटाए गए मान से करना है। , जो एक वैध कॉल है।

वर्तमान में शेष विश्व के लिए ES6 सिंटैक्स को छोड़ कर:

var upserted = result.getUpsertedIds();    // get this from the bulk result

upserted = upserted.map(function(up) { return up._id }); // filter out just the _id values

var modifiedIds = edges.map(function(edge) {    // get _id only from source 
    return edge.id;  
}).filter(function(edge) {
    return upserted.indexOf(edge) == -1;        // and return only non upserted
});

जहां से .getUpsertedIds() . का लौटाया गया परिणाम वस्तुओं की एक सरणी है जिसमें बल्क अपडेट से "इंडेक्स" स्थिति और उत्पन्न या आपूर्ति की गई _id दोनों शामिल हैं "अप्सर्ट" का मान।

[ { index: 0, _id: 1 } ]

तो "क्या नहीं है" देखने के लिए अपनी इनपुट सूची को "अपसर्टेड" सूची से मिलाते हुए , मूल रूप से ऐसी चीजें लौटाता है जहां संभवतः बस संशोधित। निश्चित रूप से चेतावनी के साथ कि यदि मान पहले से ही संशोधन के समान था, तो यह वास्तव में कोई संशोधन नहीं था।

लेकिन जिस तरह से एपीआई काम करने के लिए है, वह उतना ही करीब है जितना आप पाने जा रहे हैं।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Queryable<T> का वापस IMongoQuery में अनुवाद करें

  2. MongoDB गो ड्राइवर के साथ शुरुआत करना

  3. एक मोंगो डीबी में एक PHP ऑब्जेक्ट सम्मिलित करना

  4. पाइमोंगो रेगेक्स $सभी एकाधिक खोज शब्द

  5. संख्या के साथ $multiply का उपयोग नहीं कर सकते