FBFriendModel.find({
id: 333
}, function (err, docs) {
docs.remove(); //Remove all the documents that match!
});
Lo anterior no parece funcionar. Los registros aún están allí.
Alguien puede arreglar?
FBFriendModel.find({
id: 333
}, function (err, docs) {
docs.remove(); //Remove all the documents that match!
});
Lo anterior no parece funcionar. Los registros aún están allí.
Alguien puede arreglar?
Si no tiene ganas de iterar, intente FBFriendModel.find({ id:333 }).remove( callback );
oFBFriendModel.find({ id:333 }).remove().exec();
mongoose.model.find
devuelve una consulta , que tiene una remove
función .
Actualización para Mongoose v5.5.3: remove()
ahora está en desuso. Uso deleteOne()
, deleteMany()
ofindOneAndDelete() instead.
.exec()
sin embargo, esto no lo hace en absoluto. Es.exec()
necesario, ¿hay efectos secundarios al usarlo o no?ACTUALIZACIÓN: versión de mangosta (5.5.3)
remove () está en desuso y puede usar deleteOne (), deleteMany () o bulkWrite () en su lugar.
A partir de entonces
"mongoose": ">=2.7.1"
, puede eliminar el documento directamente con el.remove()
método en lugar de encontrar el documento y luego eliminarlo, lo que me parece más eficiente y fácil de mantener.Ver ejemplo:
ACTUALIZAR:
A partir de la mangosta
3.8.1
, hay varios métodos que le permiten eliminar directamente un documento, por ejemplo:remove
findByIdAndRemove
findOneAndRemove
Consulte los documentos de la API de mangosta para obtener más información.
fuente
remove(query)
potencialmente podría vaciar toda su colección si pasa accidentalmentequery = {}
. Por esa razón, prefierofindOneAndRemove(query)
si solo estoy eliminando un documento.Model.remove({ _id: 'whatever' }).exec().then(...)
docs
es una serie de documentos entonces no tiene unmongooseModel.remove()
método.Puede iterar y eliminar cada documento en la matriz por separado.
O - ya que parece que se están encontrando los documentos de un (probablemente) Identificación única - utilizar
findOne
en lugar defind
.fuente
Esto para mí es lo mejor a partir de la versión 3.8.1:
Y solo requiere una llamada de DB. Use esto dado que no realiza ninguna
remove
acción previa a la búsqueda y eliminación.fuente
pre 'remove'
acciones, funciona bien.Simplemente haz
fuente
mongoose.model.find()
devuelve un objeto de consulta que también tiene unaremove()
función.También puede usar
mongoose.model.findOne()
, si desea eliminar solo un documento único.De lo contrario, también puede seguir el enfoque tradicional donde primero recupera el documento y luego lo elimina.
Las siguientes son las formas en las
model
que puede realizar cualquiera de los siguientes procedimientos para eliminar documentos:yourModelObj.findByIdAndRemove(id, options, callback)
yourModelObj.remove(conditions, callback);
fuente
remove()
ha quedado en desuso UsodeleteOne()
,deleteMany()
obulkWrite()
.El código que uso
fuente
(node:9132) DeprecationWarning: collection.remove is deprecated. Use deleteOne, deleteMany, or bulkWrite instead.
Para generalizar puedes usar:
Otra forma de lograr esto es:
fuente
¡Tenga cuidado con findOne y elimínelo!
El código anterior elimina TODOS los usuarios llamados 'Alice' en lugar de solo el primero .
Por cierto, prefiero eliminar documentos como este:
O proporcione una devolución de llamada y omita el exec ()
fuente
Ref: http://mongoosejs.com/docs/api.html#model_Model.remove
fuente
Si está buscando eliminar solo un objeto, puede usar
En este ejemplo, Mongoose se eliminará en función de la combinación de req.params.id.
fuente
.remove()
funciona como.find()
:fuente
Prefiero la notación de promesa, donde la necesitas
fuente
Para eliminar documentos, prefiero usar
Model.remove(conditions, [callback])
Consulte la documentación de la API para eliminar: -
http://mongoosejs.com/docs/api.html#model_Model.remove
Para este caso, el código será: -
Si desea eliminar documentos sin esperar una respuesta de MongoDB, no pase una devolución de llamada, entonces debe llamar a exec en la Consulta devuelta
fuente
Puede usar la consulta directamente dentro de la función remove, por lo que:
fuente
Siempre puede usar la función incorporada Mongoose:
fuente
Actualización:
.remove()
se deprecia pero todavía funciona para versiones anterioresfuente
usando el método remove () puedes eliminarlo.
fuente
Esto funcionó para mí, solo prueba esto:
fuente
Model.remove
está en desusoSegún la respuesta de Samyak Jain, uso Async Await
fuente
Realmente me gusta este patrón en aplicaciones Express / Mongoose asíncronas / en espera :
fuente
fuente