MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Node.js, MongoDB - Wstawianie/aktualizowanie wielu dokumentów i wysyłanie jednej odpowiedzi

Możesz wypróbować async moduł do tego. Zawiera kilka bardzo przydatnych metod przetwarzania każdego elementu w kolekcji i oferuje funkcje na wypadek zakończenia całego przetwarzania.

W szczególności odsyłam Cię do kolejki funkcja, która pozwala dodać zadania do kolejki, a następnie po przetworzeniu wszystkich elementów zrób coś.

Na przykład możesz zrobić coś takiego:

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);
} 

Następnie, jeśli założymy, że masz listę dokumentów w zmiennej o nazwie dokumenty , wszystko, co musisz zrobić, aby je wszystkie przetworzyć, to umieścić je w kolejce.

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

Wskazówka:musisz wypchnąć obiekt zawierający dokument do kolejki. Wystąpił dziwny błąd, jeśli spróbujesz przekazać nieopakowany obiekt.

Teraz, jeśli chcesz mieć określone statusy dla każdego dokumentu, który przetwarzasz w Mongo, jest to całkowicie możliwe. Dopóki utworzyłeś instancję struktury danych poza kolejką, możesz dodać do niej kody statusCodes (itp.) podczas przetwarzania każdego elementu i wysłać strukturę do klienta w drenie kolejki. funkcjonować. Nie powinno to być zbyt trudne.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Błąd Node.js:Nie można znaleźć modułu „mongoose”

  2. jak zaindeksować nazwę użytkownika w mongo z niewrażliwością na wielkość liter?

  3. kopia mongo z jednej kolekcji do drugiej (na tej samej bazie danych)

  4. Nie można użyć zagnieżdżonego VariableOperators.mapItemsOf w Spring Data MongoDb

  5. Jak pobrać następny i poprzedni element bieżącego za pomocą Mongoose?