2012-07-23 12 views

Respuesta

10

Es posible, pero requiere un comando diferente. Usted está buscando findAndModify command.

Si establece las opciones en {query: ..., remove: true, new: false}, eliminará un solo documento y devolverá el documento eliminado.

Algunas notas:

  • new es una palabra clave en muchos idiomas, asegúrese de que está envolviendo el texto de la bandera correctamente.
  • findAndModify solo funcionará con un solo documento. Esto está bien para eliminar _id pero no es bueno para eliminaciones a distancia.
+1

no es el parámetro '' new' ignorado cuando se retire: true'? lo encontró en [nodo-mongodb-native docs] (https://github.com/mongodb/node-mongodb-native#find-and-modify) y [aquí] (http://docs.mongodb.org/ manual/reference/command/findAndModify /) – balazs

+0

Es muy posible que se ignore. Esos documentos se escribieron aproximadamente 12 meses después de que se escribió esta respuesta :). Dicho esto, probablemente tengas razón, es probable que se ignore el indicador 'nuevo' dado que el valor de retorno sería el mismo en ambos casos. –

+0

¿Cómo hacemos para devolver el rango de documentos que coinciden con la condición después de eliminarlos? – thethakuri

2
db.collection('mycollection').findOneAndDelete({ 
    id: '123456' 
}, function (error, response) { 
    response.value;// returns the deleted object, but no longer exists in the database 
}); 
+4

Si bien este fragmento de código puede resolver la pregunta, [incluyendo una explicación] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-based- respuestas) realmente ayuda a mejorar la calidad de su publicación. Recuerde que usted está respondiendo la pregunta a los lectores en el futuro, y es posible que esas personas no sepan los motivos de su sugerencia de código. Por favor, intente no saturar su código con comentarios explicativos, ¡esto reduce la legibilidad tanto del código como de las explicaciones! – kayess

Cuestiones relacionadas