使用mongoose和nodejs MongoDB存储国家/地区,城市和用户信息

时间:2016-04-24 13:22:43

标签: node.js mongodb mongoose schema relationship

我想在我的新项目中使用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...

在这个模式中,我可以通过使用外键找到城市的国家,用户的国家/地区等。

你建议哪种方式使用nodejs w / mongodb以最佳性能创建这样的模式?

1 个答案:

答案 0 :(得分: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) {
})

顺便说一下。 _id是由mongo为每个数据自动创建的。因此,您无需在模式中添加id字段。希望能帮助到你。祝你好运