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

Mongoose Find and Remove

Както отбелязахте, използването на следното няма да върне документа:

Data.find(query).remove().exec(function(err, data) {
  // data will equal the number of docs removed, not the document itself
}

Поради това не можете да запазите документа в ActionCtrl използвайки този подход.

Можете да постигнете същия резултат, като използвате оригиналния си подход или използвате някаква форма на итерация. Библиотека за контролен поток като async може да е полезно за обработка на асинхронните повиквания. Това няма да намали вашия код, но ще намали заявките. Вижте пример:

Data.find(query, function(err, data) {
  async.each(data, function(dataItem, callback) {
    dataItem.remove(function(err, result) {
      ActionCtrl.saveRemove(result, callback);
    });
  });
});

Този отговор предполага, че ActionCtrl.saveRemove() внедряването може да вземе отделен документ като параметър и може да изпълни обратното извикване от async.each цикъл. async.each изисква обратно извикване да се изпълнява без аргументи в края на всяка итерация, така че в идеалния случай бихте изпълнили това в края на .saveRemove()

Имайте предвид, че remove на отделен документ всъщност ще върне документа, който е бил премахнат.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB вмъкване без дубликати

  2. как да извличам 10 минути преди създадените записи в mongodb

  3. Вмъкване и запитване на дата с MongoDB и Nodejs

  4. Индексът MongoDB, който не е чувствителен към главни и малки букви, започва с проблеми с производителността

  5. Как да намеря прилика в документно поле MongoDB?