sql >> Database >  >> NoSQL >> MongoDB

Mangoest Zoeken en verwijderen

Zoals je hebt opgemerkt, zal het volgende document niet worden geretourneerd:

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

Als zodanig kunt u het document niet opslaan in ActionCtrl deze benadering gebruiken.

U kunt hetzelfde resultaat bereiken met uw originele aanpak, of een of andere vorm van iteratie gebruiken. Een besturingsstroombibliotheek zoals async kan van pas komen om de asynchrone oproepen af ​​te handelen. Het zal uw code niet verminderen, maar het aantal zoekopdrachten verminderen. Zie voorbeeld:

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

Dit antwoord gaat ervan uit dat de ActionCtrl.saveRemove() implementatie kan een individueel document als parameter nemen en kan de callback uitvoeren vanaf de async.each lus. async.each vereist dat een callback wordt uitgevoerd zonder argumenten aan het einde van elke iteratie, dus u zou dit idealiter aan het einde van .saveRemove() uitvoeren

Merk op dat de remove methode op een individueel document zal het verwijderde document daadwerkelijk teruggeven.




  1. MongoDb:$geoIntersects voor meerdere invoercoördinaten

  2. NodeJS - MongoDB:gebruik een openingsverbinding

  3. Correcte manier om mongodb en express te starten?

  4. Update met AddToSet die de null-waarde niet bijwerkt met MongoDB C#