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

上面的方法似乎不管用。记录还在那里。

有人能修好吗?


当前回答

你可以直接在remove函数中使用查询,这样:

FBFriendModel.remove({ id: 333}, function(err){});

其他回答

mongodb .model.find()返回一个查询对象,该对象也有一个remove()函数。

如果你只想删除一个唯一的文档,你也可以使用mongoose.model.findOne()。

否则,您也可以遵循传统的方法,即首先检索文档,然后删除。

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

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

以下是在模型对象上您可以执行以下任何操作来删除文档的方法:

yourModelObj.findOneAndRemove(conditions, options, callback)

yourModelObj。findByIdAndRemove(id, options, callback)

yourModelObj。删除(条件,回调);

var query = Comment.remove({ _id: id });
query.exec();
model.remove({title:'danish'}, function(err){
    if(err) throw err;
});

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

这招对我很管用,试试这个:

const id = req.params.id;
      YourSchema
      .remove({_id: id})
      .exec()
      .then(result => {
        res.status(200).json({
          message: 'deleted',
          request: {
            type: 'POST',
            url: 'http://localhost:3000/yourroutes/'
          }
        })
      })
      .catch(err => {
        res.status(500).json({
          error: err
        })
      });

这对我来说是3.8.1版本最好的:

MyModel.findOneAndRemove({field: 'newValue'}, function(err){...});

它只需要一个DB调用。 如果在搜索和删除之前不执行任何删除操作,则使用此方法。

对于删除文档,我更喜欢使用Model。(回调)remove(条件)

请参考API文件删除:-

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

对于这种情况,代码将是:-

FBFriendModel.remove({ id : 333 }, function(err, callback){
console.log(‘Do Stuff’);
})

如果你想在不等待MongoDB响应的情况下删除文档,不传递回调,那么你需要对返回的查询调用exec

var removeQuery = FBFriendModel.remove({id : 333 });
removeQuery.exec();