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

MongoDB-forespørgsel på udfyldte felter

Svaret er at ændre dit skema.

Du er faldet i den fælde, som mange udviklere har foran dig, når de kommer ind i dokumentdatabaseudvikling fra en historik med brug af relationelle databaser:MongoDB er ikke en relationel database og bør ikke behandles som en.

Du skal holde op med at tænke på fremmednøgler og perfekt normaliserede data og i stedet holde hvert dokument så selvstændigt som muligt og tænke på, hvordan du bedst integrerer relevante tilknyttede data i dine dokumenter.

Det betyder ikke, at du ikke også kan opretholde foreninger. Det kan betyde en struktur som denne, hvor du kun indlejrer nødvendige detaljer og forespørger efter den fulde post, når det er nødvendigt:

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

  // ... other fields
});

At genoverveje din indlejringsstrategi vil meget forenkle dine forespørgsler og holde antallet af forespørgsler på et minimum. populate vil sprænge din optælling hurtigt, og efterhånden som dit datasæt vokser, vil dette højst sandsynligt blive et problem.



  1. redis lua script vs. enkeltopkald

  2. MongoDB $lt Aggregation Pipeline Operator

  3. Farerne ved at bygge indekser på MongoDB

  4. Spring Data MongoDB Lookup med Pipeline Aggregation