2016-04-24 3 views
0

をnodejs。それは初めて、mongodbを使っています。外部キーを使用して経由して...私はなど、市の国、ユーザーの国を、見つけることができます。このスキーマでストア国、市とユーザ情報と、私は私の新しいプロジェクトでのMongoDBを使いたいのMongoDB

tbl_country > id,name,created_at,etc.. 
tbl_city > id,country_id,name,created_at,etc... 
tbl_user > id,name_surname,city_id,etc... 

:リレーショナルデータベースでは私のような件のデータを保存しました。あなたはMongoDBの/ワットnodejsで最高のパフォーマンスでこのようなスキーマを作成することをお勧めします方法

答えて

1

スキーマの作成時には、引き続き外部キーを使用できます。あなたが与えた例として、このスキーマをチェックしてください。

var CountrySchema = new Schema({ 
    name: String, 
    created_at: Date 
}); 

var CitySchema = new Schema({ 
    countryName: { type: mongoose.Schema.Types.ObjectId, ref: 'Country' }, 
    created_at: Date 
}); 

var UserSchema = new Schema({ 
    name_surname: String, 
    city: { type: mongoose.Schema.Types.ObjectId, ref: 'City' } 
}) 

mongoose.model('Country', CountrySchema); 
mongoose.model('City', CitySchema); 
mongoose.model('User', UserSchema); 

データをフェッチするときは、 'populate'メソッドを使用する必要があります。例えば:

City.find() 
populate('countryName', 'name') // It will bring only name field 
.exec(function(err, cities) { 
}) 

Btw。 _idは各データのためにmongoによって自動的に作成されます。したがって、スキーマにidフィールドを追加する必要はありません。それが役に立てば幸い。幸運

+0

私は彼らがパフォーマンスを低下させると言ういくつかの記事を読む?本当ですか? – KadirCanerErgun

+0

どのように使用するかによって異なります。スキーマに国名を格納していて、国スキーマを使用していない場合は、参照IDを使用する必要はありません。スキーマにサブ文書を追加するだけです。新しいスキーマ({country:{name:String、code:Number}})または単に新しいスキーマ({country:String})と同じです。この場合、 'refId'を使う必要はありません。パフォーマンスが低下します。また、古い投稿のある文書を読んでいるかもしれません。 mongoは広く使用されているので、それ自体が大きく発展しています。だから、人々はモンゴの初めの段階を考えているので、パフォーマンスについて心配する必要はありません。 –

関連する問題