sql >> Database teknologi >  >> NoSQL >> MongoDB

Mongoose Find og Fjern

Som du har bemærket, vil brug af følgende ikke returnere dokumentet:

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

Som sådan kan du ikke gemme dokumentet i ActionCtrl ved at bruge denne tilgang.

Du kan opnå det samme resultat ved at bruge din oprindelige tilgang, eller bruge en form for iteration. Et kontrolflowbibliotek som async kan være praktisk til at håndtere asynkrone opkald. Det reducerer ikke din kode, men reducerer forespørgslerne. Se eksempel:

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

Dette svar antager, at ActionCtrl.saveRemove() implementering kan tage et individuelt dokument som en parameter og kan udføre tilbagekaldet fra async.each sløjfe. async.each kræver, at et tilbagekald køres uden argumenter i slutningen af ​​hver iteration, så du ville ideelt set køre dette i slutningen af ​​.saveRemove()

Bemærk, at remove metode på et individuelt dokument vil faktisk returnere det dokument, der er blevet fjernet.




  1. Håndtering af langvarige operationer i MongoDB

  2. MongoDB PHP bruger $in med array

  3. MongoDB $or forespørgsel

  4. kan ikke lave grundlæggende mongo shell script med godkendelse