MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Query MongoDB su campi popolati

La risposta è cambiare il tuo schema.

Sei caduto nella trappola che molti sviluppatori hanno davanti a te quando sono entrati nello sviluppo di database di documenti da una storia di utilizzo di database relazionali:MongoDB non è un database relazionale e non dovrebbe essere trattato come tale.

Devi smettere di pensare a chiavi esterne e dati perfettamente normalizzati e, invece, mantenere ogni documento il più autonomo possibile, pensando a come incorporare al meglio i dati associati pertinenti all'interno dei tuoi documenti.

Questo non significa che non puoi mantenere anche le associazioni. Potrebbe significare una struttura come questa, in cui incorpori solo i dettagli necessari e richiedi il record completo quando necessario:

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

  // ... other fields
});

Ripensare la tua strategia di incorporamento sarà ottimo semplifica le tue query e mantieni il numero di query al minimo. populate aumenterà rapidamente il tuo conteggio e, man mano che il tuo set di dati cresce, molto probabilmente diventerà un problema.