Sí, esto es por diseño. MongoDB explícitamente no proporciona uniones o transacciones. Quitar + Guardar es una forma de transacción.
Realmente tiene dos opciones de baja complejidad aquí, ambas implican findAndModify
.
Opción #1:una sola colección
Según su descripción, básicamente está creando una cola con algunas funciones adicionales. Si aprovecha una sola colección, entonces usa findAndModify
para actualizar el estado de cada elemento a medida que se procesa.
Desafortunadamente, eso significa que perderá esto:... que la colección "entrante" se puede mantener muy pequeña y rápida de esta manera .
Opción #2:dos colecciones
La otra opción es básicamente una confirmación de dos fases, aprovechando findAndModify
.
Eche un vistazo a los documentos de este aquí .
Una vez que un elemento se procesa en A establece un campo para marcarlo para su eliminación. Luego copia ese elemento a B . Una vez copiado a B luego puede eliminar el elemento de A .