350 Stimmen

Wie kann ich Dokumente mit Node.js Mongoose entfernen?

FBFriendModel.find({
    id: 333
}, function (err, docs) {
    docs.remove(); //Remove all the documents that match!
});

Das obige Verfahren scheint nicht zu funktionieren. Die Datensätze sind immer noch da.

Kann jemand helfen?

31voto

Sandro Munda Punkte 38320

Einfach tun

FBFriendModel.remove().exec();

30voto

Amol M Kulkarni Punkte 20152

mongoose.model.find() gibt eine Abfrageobjekt die auch eine remove() Funktion.

Sie können verwenden mongoose.model.findOne() auch, wenn Sie nur ein einziges Dokument entfernen möchten.

Alternativ können Sie auch den traditionellen Ansatz verfolgen, bei dem Sie zuerst das Dokument abrufen und dann entfernen.

yourModelObj.findById(id, function (err, doc) {
    if (err) {
        // handle error
    }

    doc.remove(callback); //Removes the document
})

Nachfolgend sind die Möglichkeiten zur model Objekt können Sie ein oder mehrere Dokumente auf eine der folgenden Weisen entfernen:

yourModelObj.findOneAndRemove(conditions, options, callback)

yourModelObj.findByIdAndRemove(id, options, callback)

yourModelObj.remove(conditions, callback);

var query = Comment.remove({ _id: id });
query.exec();

21voto

Zur Verallgemeinerung können Sie verwenden:

SomeModel.find( $where, function(err,docs){
  if (err) return console.log(err);
  if (!docs || !Array.isArray(docs) || docs.length === 0) 
    return console.log('no docs found');
  docs.forEach( function (doc) {
    doc.remove();
  });
});

Eine andere Möglichkeit, dies zu erreichen, ist:

SomeModel.collection.remove( function (err) {
  if (err) throw err;
  // collection is now empty but not deleted
});

19voto

damphat Punkte 16926

Seien Sie vorsichtig mit findOne und remove!

  User.findOne({name: 'Alice'}).remove().exec();

Der obige Code beseitigt ALLE Benutzer mit dem Namen 'Alice' anstelle von die erste nur.

Übrigens ziehe ich es vor, solche Dokumente zu entfernen:

  User.remove({...}).exec();

Oder stellen Sie einen Rückruf bereit und lassen Sie das exec() weg.

  User.remove({...}, callback);

15voto

Danish Punkte 493
model.remove({title:'danish'}, function(err){
    if(err) throw err;
});

Ref: http://mongoosejs.com/docs/api.html#model_Model.remove

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X