MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB-Abfrage für ausgefüllte Felder

Die Antwort ist, Ihr Schema zu ändern.

Sie sind in die Falle getappt, die viele Entwickler vor Ihnen haben, wenn sie von einer Geschichte der Verwendung relationaler Datenbanken in die Entwicklung von Dokumentendatenbanken einsteigen:MongoDB ist keine relationale Datenbank und sollte auch nicht wie eine behandelt werden.

Sie müssen aufhören, über Fremdschlüssel und perfekt normalisierte Daten nachzudenken, und stattdessen jedes Dokument so eigenständig wie möglich halten und darüber nachdenken, wie Sie relevante zugehörige Daten am besten in Ihre Dokumente einbetten können.

Das bedeutet nicht, dass Sie nicht auch Assoziationen aufrechterhalten können. Es könnte eine Struktur wie diese bedeuten, in der Sie nur notwendige Details einbetten und bei Bedarf nach dem vollständigen Datensatz fragen:

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

  // ... other fields
});

Das Überdenken Ihrer Einbettungsstrategie wird großartig sein Vereinfachen Sie Ihre Abfragen und halten Sie die Anzahl der Abfragen auf ein Minimum. populate wird Ihre Zählung schnell in die Höhe treiben, und wenn Ihr Datensatz wächst, wird dies sehr wahrscheinlich zu einem Problem.