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.