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

Consulta de MongoDB en campos poblados

La respuesta es cambiar tu esquema.

Ha caído en la trampa que muchos desarrolladores tienen antes que usted cuando ingresa al desarrollo de bases de datos de documentos a partir de un historial de uso de bases de datos relacionales:MongoDB no es una base de datos relacional y no debe tratarse como tal.

Debe dejar de pensar en claves foráneas y datos perfectamente normalizados y, en su lugar, mantener cada documento lo más autónomo posible, pensando en cómo integrar mejor los datos asociados relevantes dentro de sus documentos.

Esto no significa que no puedas mantener asociaciones también. Podría significar una estructura como esta, donde incrusta solo los detalles necesarios y consulta el registro completo cuando sea necesario:

var activitySchema = new mongoose.Schema({
  event: {
    _id: { type: ObjectId, ref: "Event" },
    name: String,
    private: String
  },

  // ... other fields
});

Repensar su estrategia de inserción será mucho Simplifique sus consultas y mantenga el recuento de consultas al mínimo. populate aumentará su conteo rápidamente y, a medida que crezca su conjunto de datos, es muy probable que esto se convierta en un problema.