sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB-fråga på ifyllda fält

Svaret är att ändra ditt schema.

Du har fallit i fällan som många utvecklare har framför dig när du kommer in i dokumentdatabasutveckling från en historia av att använda relationsdatabaser:MongoDB är inte en relationsdatabas och bör inte behandlas som en.

Du måste sluta tänka på främmande nycklar och perfekt normaliserad data och istället hålla varje dokument så fristående som möjligt och fundera på hur du bäst bäddar in relevant tillhörande data i dina dokument.

Det betyder inte att du inte kan upprätthålla föreningar också. Det kan betyda en struktur som denna, där du bara bäddar in nödvändiga detaljer och frågar efter hela posten när det behövs:

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

  // ... other fields
});

Att ompröva din inbäddningsstrategi kommer mycket förenkla dina frågor och håll antalet frågor till ett minimum. populate kommer att spränga din räkning snabbt, och när din datauppsättning växer kommer detta med stor sannolikhet att bli ett problem.



  1. Hur lagrar man i Redis sorterad uppsättning med tidsstämpel på serversidan som poäng?

  2. Klona en MongoDB-instans eller replikuppsättning

  3. Docker-compose , hur som helst för att ange en redis.conf-fil?

  4. MongoDB-uppdatering med skick