La pregunta equivocada
"¿Cuál es mejor, MongoDB o PostgreSQL?" es la pregunta equivocada. Ambas son bases de datos excelentes para casos distintos. La pregunta correcta es: ¿cuál se adapta mejor a las necesidades específicas de mi proyecto?
Después de trabajar con las dos en producción, acá está mi framework de decisión.
MongoDB: cuándo lo elijo
Cuando el schema va a cambiar frecuentemente. En las etapas tempranas de un producto, no sabés exactamente qué datos vas a necesitar. MongoDB te permite agregar campos a los documentos sin migraciones. En PostgreSQL, cada cambio de schema es una migración que tiene que planificarse, testearse y ejecutarse con cuidado.
Cuando los datos son naturalmente jerárquicos o embebidos. Un post de blog con sus comentarios, un pedido con sus líneas de detalle: MongoDB permite guardar todo en un documento. Menos joins, consultas más simples.
Cuando el equipo ya sabe JavaScript. Mongoose es JavaScript. Las queries son objetos JS. El mental model es consistente con el resto del stack. Eso reduce la carga cognitiva.
Para proyectos con escala horizontal previsible. MongoDB sharding es más sencillo que escalar horizontalmente PostgreSQL.
PostgreSQL: cuándo lo elijo
Cuando las relaciones entre entidades son complejas y frecuentes. Si tenés 10 tablas con relaciones many-to-many y hacés queries que cruzan 5 entidades, SQL con joins es mucho más natural y performante que el equivalente en MongoDB con múltiples lookups.
Cuando la consistencia transaccional es crítica. Fintech, sistemas de inventario, cualquier caso donde una operación involucra múltiples writes que tienen que ser atómicos. PostgreSQL ACID compliance es más robusto que las transacciones multi-documento de MongoDB.
Cuando el equipo tiene experiencia SQL sólida. El mejor stack es el que el equipo conoce bien.
El mito del "MongoDB no escala"
Falso. MongoDB escala perfectamente para la mayoría de los casos de uso. El problema que la gente confunde con "no escala" es usarlo para casos donde los datos son relacionales por naturaleza. Si guardás datos relacionales en documentos anidados, eventualmente la inconsistencia te va a costar. No es un problema de escala, es un problema de modelado.
Mi decisión en la práctica
Para el 80% de los proyectos que construyo —sistemas de gestión, plataformas SaaS, apps de contenido— MongoDB con Mongoose es la elección correcta. Para proyectos con transacciones financieras complejas, reportes SQL avanzados, o equipos con background en SQL, PostgreSQL con Prisma.