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

मैं Node.js का उपयोग करके MongoDB में एक कर्सर.forEach () का उपयोग कैसे कर सकता हूं?

उत्तर उस ड्राइवर पर निर्भर करता है जिसका आप उपयोग कर रहे हैं। मुझे पता है कि सभी MongoDB ड्राइवरों के पास cursor.forEach() . है एक तरह से या किसी अन्य को लागू किया।

यहां कुछ उदाहरण दिए गए हैं:

नोड-मोंगोडब-देशी

collection.find(query).forEach(function(doc) {
  // handle
}, function(err) {
  // done or error
});

मोंगोज

db.collection.find(query).forEach(function(err, doc) {
  // handle
});

भिक्षु

collection.find(query, { stream: true })
  .each(function(doc){
    // handle doc
  })
  .error(function(err){
    // handle error
  })
  .success(function(){
    // final callback
  });

मोंगोज़

collection.find(query).stream()
  .on('data', function(doc){
    // handle doc
  })
  .on('error', function(err){
    // handle error
  })
  .on('end', function(){
    // final callback
  });

.forEach . के अंदर दस्तावेज़ों को अपडेट करना कॉलबैक

.forEach . के अंदर दस्तावेज़ों को अद्यतन करने में एकमात्र समस्या कॉलबैक यह है कि आपको पता नहीं होता है कि सभी दस्तावेज़ कब अपडेट किए जाते हैं।

इस समस्या को हल करने के लिए आपको कुछ अतुल्यकालिक नियंत्रण प्रवाह समाधान का उपयोग करना चाहिए। यहां कुछ विकल्प दिए गए हैं:

  • async
  • वादे (कब.जेएस, ब्लूबर्ड)

यहां async . का उपयोग करने का एक उदाहरण दिया गया है , इसकी queue . का उपयोग करते हुए फ़ीचर:

var q = async.queue(function (doc, callback) {
  // code for your update
  collection.update({
    _id: doc._id
  }, {
    $set: {hi: 'there'}
  }, {
    w: 1
  }, callback);
}, Infinity);

var cursor = collection.find(query);
cursor.each(function(err, doc) {
  if (err) throw err;
  if (doc) q.push(doc); // dispatching doc to async.queue
});

q.drain = function() {
  if (cursor.isClosed()) {
    console.log('all items have been processed');
    db.close();
  }
}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. जांचें कि क्या मोंगोडब डेटाबेस मौजूद है?

  2. mongoDB में समूह कैसे करें और परिणाम में सभी फ़ील्ड वापस करें

  3. महीने के हिसाब से समूह और गिनती

  4. स्प्रिंग डेटा में मोंगो एकत्रीकरण क्वेरी कैसे करें?

  5. क्या मुझे जेडब्ल्यूटी टोकन को रेडिस में स्टोर करना चाहिए?