MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Node.js, MongoDB - Вмъкване/актуализиране на множество документи и изпращане на един отговор

Може да опитате async модул за това. Има някои много полезни методи за обработка на всеки елемент в колекция и предлага функционалност, когато цялата обработка е приключила.

Насочвам ви по-специално към опашката функция, която ви позволява да добавяте задачи към опашка, след което след като всички елементи бъдат обработени, направете нещо.

Например, можете да направите нещо като:

var q = async.queue(function(task, callback) {
  // task.doc would contain your individual doc to process

  // your insert / update logic goes here...

  // Callback signifies you're done with this task
  callback();

}, 2) // <--- this number specifies the number of tasks to run in parallel

q.drain = function() {
  // this is the queue's callback, called when the queue is empty,
  // i.e. when all your documents have been processed.

  res.send(statusCode, message);
} 

Тогава, ако приемем, че имате вашия списък с документи в променлива с име docs , всичко, което трябва да направите, за да ги обработите всички, е да ги поставите на опашката.

for (var doc in docs) {
  q.push({ doc: docs[doc] }, function(err) {
    if (err) console.log(err);
  })
}

Подсказка:трябва да натиснете обект, съдържащ документа на опашката. Има странна грешка, ако се опитате да прехвърлите неопакован обект.

Сега, ако искате конкретните състояния за всеки документ, който обработвате в Mongo, това е напълно възможно по следния начин. Докато сте създали екземпляр на структура от данни извън опашката, можете да добавите statusCodes (и т.н.) към нея, когато всеки елемент се обработва, и да изпратите структурата на клиента в източването на опашката функция. Не би трябвало да е много караница.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongodb схема за публикации и споделяния

  2. Запазване, организиране и търсене на продукти, опции/тагове и категории

  3. $addFields, когато не е намерено $match

  4. Как да възстановите дъмпа във вашия работещ mongodb

  5. В Morphia как мога да актуализирам един вграден обект в ArrayList