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!
});
Выше, кажется, не работает. Записи все еще там.
Может кто-нибудь исправить?
Если вам не хочется повторяться, попробуйте FBFriendModel.find({ id:333 }).remove( callback );
илиFBFriendModel.find({ id:333 }).remove().exec();
mongoose.model.find
возвращает запрос , который имеет remove
функцию .
Обновление Mongoose v5.5.3 - remove()
устарело. Использование deleteOne()
, deleteMany()
илиfindOneAndDelete() instead.
.exec()
но это совсем не так. Является ли это.exec()
необходимо, есть ли побочные эффекты использовать его или нет?ОБНОВЛЕНИЕ: версия Mongoose (5.5.3)
Удаление () устарело, и вы можете использовать вместо него deleteOne (), deleteMany () или bulkWrite ().
Как
"mongoose": ">=2.7.1"
вы можете удалить документ непосредственно с.remove()
метода, а не найти документ, а затем удалить его, что мне кажется более эффективным и простым в обслуживании.Смотрите пример:
ОБНОВИТЬ:
Что касается мангуста
3.8.1
, есть несколько методов, которые позволяют вам напрямую удалить документ, скажем:remove
findByIdAndRemove
findOneAndRemove
Обратитесь к документации mongoose API для получения дополнительной информации.
источник
remove(query)
потенциально может очистить всю вашу коллекцию, если вы случайно пропуститеquery = {}
. По этой причине я предпочитаюfindOneAndRemove(query)
удалять только один документ.Model.remove({ _id: 'whatever' }).exec().then(...)
docs
это массив документов. так что у него нетmongooseModel.remove()
метода.Вы можете перебирать и удалять каждый документ в массиве отдельно.
Или - поскольку похоже, что вы находите документы по (возможно) уникальному идентификатору - используйте
findOne
вместоfind
.источник
Это для меня лучшее из версии 3.8.1:
И это требует только одного вызова БД. Используйте это, если вы не выполняете никаких
remove
действий, связанных с поиском и удалением.источник
pre 'remove'
действия, он работает нормально.Просто делай
источник
mongoose.model.find()
возвращает объект запроса, который также имеетremove()
функцию.Вы также можете использовать
mongoose.model.findOne()
, если вы хотите удалить только один уникальный документ.В противном случае вы также можете следовать традиционному подходу, когда сначала извлекаете документ, а затем удаляете.
Ниже приведены способы для
model
объекта, который вы можете сделать любым из следующих действий, чтобы удалить документ (ы):yourModelObj.findByIdAndRemove(id, options, callback)
yourModelObj.remove(conditions, callback);
источник
remove()
был объявлен устаревшим ИспользуйтеdeleteOne()
,deleteMany()
илиbulkWrite()
.Код, который я использую
источник
(node:9132) DeprecationWarning: collection.remove is deprecated. Use deleteOne, deleteMany, or bulkWrite instead.
Для обобщения вы можете использовать:
Еще один способ добиться этого:
источник
Будьте осторожны с findOne и удалите!
Приведенный выше код удаляет ВСЕХ пользователей с именем «Алиса» вместо первого .
Кстати, я предпочитаю удалять документы следующим образом:
Или предоставить обратный вызов и опустить exec ()
источник
Ссылка: http://mongoosejs.com/docs/api.html#model_Model.remove
источник
Если вы ищете только один объект для удаления, вы можете использовать
В этом примере Mongoose удалит на основе соответствующего req.params.id.
источник
.remove()
работает как.find()
:источник
Я предпочитаю обозначение обещания, где вам нужно, например,
источник
Для удаления документа я предпочитаю использовать
Model.remove(conditions, [callback])
Пожалуйста, обратитесь к документации API для удаления: -
http://mongoosejs.com/docs/api.html#model_Model.remove
Для этого случая код будет:
Если вы хотите удалить документы, не ожидая ответа от MongoDB, не передавайте обратный вызов, тогда вам нужно вызвать exec для возвращенного запроса
источник
Вы можете просто использовать запрос непосредственно в функции удаления, поэтому:
источник
Вы всегда можете использовать встроенную функцию Mongoose:
источник
Обновление:
.remove()
устарело, но это все еще работает для более старых версийисточник
используя метод remove () вы можете удалить.
источник
Это сработало для меня, просто попробуйте это:
источник
Model.remove
устарелаСогласно ответу Samyak Jain, я использую Async Await
источник
Мне очень нравится этот шаблон в приложениях Express / Mongoose с поддержкой async / await :
источник
источник