2016-07-29 2 views
0

私はmongoを使い始めています。ユーザーが「好き」しているアイテムのスキーマを作成したいと思います。私の現在のコード、マングースとのNode.jsを使用して見ては、次のとおりです。MongoDB&Mongooseでお気に入りのリストを構成していますか?

リレーショナルDBの背景から来る
// load the things we need 
var mongoose = require('mongoose'); 

// define the schema for our favourites model 
var favouritedItemsSchema = mongoose.Schema({ 
    userId   : Number, 
    item    : [{ 
     itemId  : Number, 
     addedDate : Date 
    }] 
}); 

// create the model for favourites and expose it to our app 
module.exports = mongoose.model('Favourites', favouritedItemsSchema); 

を、私は上記のアプローチは、適切なNoSQLのDBの設計アプローチを表すかどうかを疑問に思って?もしそうでなければ、誰かが私にデザイン哲学に合った何かを見せてもらえますか?

答えて

1

はい、正しく、リレーショナルとNoSQLの設計アプローチは全く異なります。

たとえば、RDBMSに10個のテーブルがある場合、mongoには2つまたは3つのコレクションしか存在できません。これは、オブジェクト間の関係を作成する方法がNoSQL(サブ文書、配列など)ではるかに面白いからです。

ここでは、既存のユーザーコレクションを再利用して問題を解決する方法を示します。

// load the things we need 
var mongoose = require('mongoose'); 

// define the schema for our model 
var userSchema = mongoose.Schema({ 
    username: string, 
    favourites: [{ 
     id: Schema.Types.ObjectId, 
     addedDate: Date 
    }] 
}); 

// export model 
module.exports = mongoose.model('User', userSchema); 
+0

また、控えめでないお気に入りの配列を作成し、拘束されていない配列がmongo / –

関連する問題