MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Requête MongoDB sur des champs remplis

La réponse est de changer votre schéma.

Vous êtes tombé dans le piège que de nombreux développeurs ont devant vous lorsqu'ils se lancent dans le développement de bases de données documentaires après avoir utilisé des bases de données relationnelles :MongoDB n'est pas une base de données relationnelle et ne doit pas être traitée comme telle.

Vous devez cesser de penser aux clés étrangères et aux données parfaitement normalisées et à la place, garder chaque document aussi autonome que possible, en réfléchissant à la meilleure façon d'intégrer les données associées pertinentes dans vos documents.

Cela ne veut pas dire que vous ne pouvez pas non plus maintenir des associations. Cela peut signifier une structure comme celle-ci, dans laquelle vous n'intégrez que les détails nécessaires et interrogez l'enregistrement complet si nécessaire :

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

  // ... other fields
});

Repenser votre stratégie d'intégration sera grand simplifiez vos requêtes et maintenez le nombre de requêtes au minimum. populate fera exploser votre compte rapidement, et à mesure que votre ensemble de données grandit, cela deviendra très probablement un problème.