sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Hay alguna forma de actualizar atómicamente dos colecciones en MongoDB?

Hay muchas respuestas aquí, pero quiero llenar todos los espacios en blanco aquí:

¿Hay alguna forma de actualizar atómicamente dos colecciones en MongoDB?

No. La actualización atómica de dos colecciones es efectivamente una transacción. MongoDB no admite transacciones entre colecciones o incluso dentro de una colección.

MongoDB proporciona varios modificadores que son atómicos en un solo documento. Entonces puede incrementar varias variables diferentes a la vez ($inc ). Aunque existen algunas limitaciones aquí, no puede realizar dos operaciones diferentes en una sola propiedad.

¿Hay alguna manera de cambiar condicionalmente algo en una colección en función de los resultados de otra colección de una sola vez?

Hay algunos documentos aquí sobre actualizaciones atómicas en general. Sin embargo, lo que realmente necesita es una cola y alguna forma de compromiso de dos fases o necesita disparadores.

Los activadores aún no se han implementado, por lo que no es realmente una opción en su caso.

Existe la posibilidad de que el mensaje se marque como leído entre esas acciones, entonces disminuiré el recuento de "no leídos" incorrectamente.

En este punto, tiene un par de estrategias diferentes para hacer que esto se comporte con cierto nivel de consistencia. Francamente, según su descripción, es posible que desee investigar la creación de una cola simple que actualice sus totales.