FBFriendModel.find({
    id: 333
}, function (err, docs) {
    docs.remove(); //Remove all the documents that match!
});
Вышеприведенное не работает. Записи все еще там.
Может ли кто-нибудь исправить?
FBFriendModel.find({
    id: 333
}, function (err, docs) {
    docs.remove(); //Remove all the documents that match!
});
Вышеприведенное не работает. Записи все еще там.
Может ли кто-нибудь исправить?
 docs - это массив документов. поэтому он не имеет метода mongooseModel.remove().
Вы можете итерировать и удалять каждый документ в массиве отдельно.
Или - поскольку похоже, что вы находите документы с помощью (возможно) уникального идентификатора - используйте findOne вместо find.
Если вам не хочется повторять, попробуйте FBFriendModel.find({ id:333 }).remove( callback ); или FBFriendModel.find({ id:333 }).remove().exec();
 mongoose.model.find возвращает Query, который имеет remove функцию.
ОБНОВЛЕНИЕ: версия Mongoose (5.5.3)
метод remove() устарел, и вы можете использовать вместо него deleteOne(), deleteMany() или bulkWrite().
Начиная с "mongoose": ">=2.7.1", вы можете удалить документ напрямую с помощью метода .remove(), а не найти документ и затем удалить его, что мне кажется более эффективным и простым в обслуживании.
Смотрите пример:
Model.remove({ _id: req.body.id }, function(err) {
    if (!err) {
            message.type = 'notification!';
    }
    else {
            message.type = 'error';
    }
});
UPDATE:
Начиная с mongoose 3.8.1, есть несколько методов, которые позволяют вам напрямую удалять документ, например:
removefindByIdAndRemovefindOneAndRemoveОбратитесь к документации API mongoose для получения дополнительной информации.
Это для меня самое лучшее с версии 3.8.1:
MyModel.findOneAndRemove({field: 'newValue'}, function(err){...});
И для этого требуется только один вызов БД.
Используйте это, если вы не выполняете действия remove pior для поиска и удаления.
Просто сделайте
FBFriendModel.remove().exec();
 mongoose.model.find() возвращает объект запроса, который также имеет функцию remove().
Вы также можете использовать mongoose.model.findOne(), если хотите удалить только один уникальный документ.
Кроме того, вы можете следовать традиционному подходу, где вы сначала извлекаете документ, а затем удаляете.
yourModelObj.findById(id, function (err, doc) {
    if (err) {
        // handle error
    }
    doc.remove(callback); //Removes the document
})
Ниже перечислены пути для объекта model, для удаления документов (ов) вы можете выполнить любое из следующих действий:
yourModelObj.findOneAndRemove(conditions, options, callback)
 yourModelObj.findByIdAndRemove(id, options, callback) 
 yourModelObj.remove(conditions, callback);
var query = Comment.remove({ _id: id });
query.exec();
Для обобщения вы можете использовать:
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();
  });
});
Другой способ достичь этого:
SomeModel.collection.remove( function (err) {
  if (err) throw err;
  // collection is now empty but not deleted
});
Будьте осторожны с findOne и удаляйте!
  User.findOne({name: 'Alice'}).remove().exec();
Код выше удаляет ВСЕ пользователей с именем "Алиса" вместо первого.
Кстати, я предпочитаю удалять такие документы:
  User.remove({...}).exec();
Или предоставить обратный вызов и опустить exec()
  User.remove({...}, callback);
 remove() устарела. Используйте deleteOne(), deleteMany() или bulkWrite().
Код, который я использую
TeleBot.deleteMany({chatID: chatID}, function (err, _) {
                if (err) {
                    return console.log(err);
                }
            });
model.remove({title:'danish'}, function(err){
    if(err) throw err;
});
Ссылка: http://mongoosejs.com/docs/api.html#model_Model.remove
Если вы ищете только один объект для удаления, вы можете использовать
Person.findOne({_id: req.params.id}, function (error, person){
        console.log("This object will get deleted " + person);
        person.remove();
    });
В этом примере Mongoose удалит на основе соответствия req.params.id.
 .remove() работает как .find():
MyModel.remove({search: criteria}, function() {
    // removed.
});
Я предпочитаю обозначение обещания, где вам нужно, например,
Model.findOneAndRemove({_id:id})
    .then( doc => .... )
Для удаления документа я предпочитаю использовать Model.remove(conditions, [callback])
Пожалуйста, обратитесь к документации 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();
Вы можете просто использовать запрос непосредственно в функции remove, поэтому:
FBFriendModel.remove({ id: 333}, function(err){});
Вы всегда можете использовать встроенную функцию Mongoose:
var id = req.params.friendId; //here you pass the id
    FBFriendModel
   .findByIdAndRemove(id)
   .exec()
   .then(function(doc) {
       return doc;
    }).catch(function(error) {
       throw error;
    });
 Обновление: .remove() но это все еще работает для более старых версий
YourSchema.remove({
    foo: req.params.foo
}, function(err, _) {
    if (err) return res.send(err)
    res.json({
        message: 'deleted ${ req.params.foo }'
    })
});
используя метод remove(), который вы можете удалить.
getLogout(data){
        return this.sessionModel
        .remove({session_id: data.sid})
        .exec()
        .then(data =>{
            return "signup successfully"
        })
    }
Это сработало для меня, просто попробуйте это:
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
        })
      });
Согласно Samyak Jain Answer, я использую Async Await
let isDelete = await MODEL_NAME.deleteMany({_id:'YOUR_ID', name:'YOUR_NAME'});
db.collection.remove(<query>,
 {
  justOne: <boolean>,
  writeConcern: <document>
})