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

Conception de base de données relationnelle vers la conception mongoDB/mongoose

Mongoose est conçu de telle manière que vous pouvez modéliser vos tables de manière relationnelle avec une relative facilité et remplir des données relationnelles basées sur le ref vous avez défini dans le schéma. Le piège est que vous devez être prudent avec le remplissage. Si vous peuplez trop ou imbriquez vos populations, vous rencontrerez des goulots d'étranglement en matière de performances.

Votre approche dans Edit 1 est en grande partie correct, mais vous ne souhaitez généralement pas remplir un ref distant basé sur un Number ou définissez le _id d'un modèle à un Number puisque mongo utilise son propre mécanisme de hachage pour gérer le _id , il s'agirait généralement d'un ObjectId avec _id implicite. Exemple comme indiqué ci-dessous :

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

Si, pour une raison quelconque, vous devez conserver un numéro d'identification pour vos enregistrements, pensez à l'appeler uid ou quelque chose qui n'entrera pas en conflit avec les internes mongo / mongoose. Bonne chance !