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

Relationales Datenbankdesign für MongoDB/Mongoose-Design

Mongoose ist so konzipiert, dass Sie Ihre Tabellen relativ einfach relational modellieren und relationale Daten basierend auf ref füllen können Sie im Schema definiert haben. Das Problem ist, dass Sie beim Befüllen vorsichtig sein müssen. Wenn Sie zu viel bevölkern oder Ihre Populationen verschachteln, werden Sie auf Leistungsengpässe stoßen.

Ihr Ansatz in Edit 1 ist weitgehend richtig, aber Sie möchten normalerweise keinen entfernten ref füllen basierend auf einer Number oder setzen Sie die _id eines Modells zu einer Number da Mongo seinen eigenen Hashing-Mechanismus zum Verwalten der _id verwendet , dies wäre normalerweise eine ObjectId mit _id impliziert. Beispiel wie unten gezeigt:

var ScoreSchema = new mongoose.Schema({
    user : { type: Schema.Types.ObjectId, ref: 'User' },
    game : { type: Schema.Types.ObjectId, ref: 'Game' },
    score: Number
});

Wenn Sie aus irgendeinem Grund eine Nummern-ID für Ihre Unterlagen verwalten müssen, sollten Sie sie uid nennen oder etwas, das nicht mit Mongo / Mongoose-Interna in Konflikt steht. Viel Glück!