Para $pullAll
para que funcione, debe hacer coincidir exactamente todo el objeto y no puede usar solo un campo (incluso si se llama _id).
Por lo tanto, también debe incluir el nombre en el comando de actualización (y los campos también deben estar en el mismo orden).
El comando que realmente quieres usar es $pull
, que hace lo que necesita aquí, es decir, criterios de filtrado coincidentes:
Aunque se llama "extraer sin todo", extrae todos los elementos coincidentes , no sólo uno. El "todo" solo significa que tiene un filtro (mientras que pullAll tiene múltiples elementos para hacer coincidir).