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.finddevuelve una consulta , que tiene una removefunció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:removefindByIdAndRemovefindOneAndRemoveConsulte 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(...)docses 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
findOneen 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
removeacció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
modelque 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.removeestá 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