MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Bagaimana saya bisa menggunakan cursor.forEach() di MongoDB menggunakan Node.js?

Jawabannya tergantung pada driver yang Anda gunakan. Semua driver MongoDB yang saya tahu memiliki cursor.forEach() diimplementasikan dengan satu atau lain cara.

Berikut beberapa contohnya:

node-mongodb-asli

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

mongojs

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

bhikkhu

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

luwak

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

Memperbarui dokumen di dalam .forEach panggilan balik

Satu-satunya masalah dengan memperbarui dokumen di dalam .forEach panggilan balik adalah bahwa Anda tidak tahu kapan semua dokumen diperbarui.

Untuk mengatasi masalah ini, Anda harus menggunakan beberapa solusi aliran kontrol asinkron. Berikut beberapa opsinya:

  • tidak sinkron
  • janji (ketika.js, bluebird)

Berikut adalah contoh penggunaan async , menggunakan queue fitur:

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. MongoDB di Ubuntu tidak akan dimulai sebagai layanan, tidak ada di log

  2. Grup dan sortir Mongodb

  3. Sisipan MongoDB Banyak ()

  4. Buat Database di MongoDB

  5. MongoDB $sum Agregasi Pipeline Operator