我尝试编写一个将国家/地区插入猫鼬数据库的程序。所有国家都保存在一个 xml 文件中,并采用 utf-8 编码。
首先,我从 xml 文件中读取所有国家并将其保存在一个数组中。国家数组看起来像这样
[ { language: 'en', iso: 'WF', name: 'Wallis and Futuna' },
{ language: 'en', iso: 'EH', name: 'Western Sahara' },
{ language: 'en', iso: 'YE', name: 'Yemen' },
{ language: 'en', iso: 'ZM', name: 'Zambia' },
{ language: 'en', iso: 'ZW', name: 'Zimbabwe' },
{ language: 'en', iso: 'AX', name: 'Åland Islands' } ]
然后我在猫鼬中创建国家模式,看起来像这样
var mongoose = require('mongoose');
var mongoOptions = { db: { safe: true } };
var Schema = mongoose.Schema;
// Database connect
var uristring =
process.env.MONGOLAB_URI ||
process.env.MONGOHQ_URL ||
'mongodb://localhost/townspeech';
mongoose.connect(uristring, mongoOptions, function (err, res) {
if (err) {
//console.log('ERROR connecting to: ' + uristring + '. ' + err);
} else {
//console.log('Successfully connected to: ' + uristring);
}
});
// Country schema
var CountrySchema = new Schema({
language: { type: String, required: true, index: true },
iso: { type: String, required: true, index: { unique: true } },
name: { type: String, required: true, index: { unique: true } },
}, { autoIndex: false });
module.exports = mongoose.model('Country', CountrySchema);
之后,将所有国家/地区插入我保存在数组中的数据库中。
我现在的问题是,当我多次执行我的程序时,我会在数据库中找到重复的实体吗?我会避免名称和iso的重复。
查看架构定义,我将字段 iso 和 name 定义为唯一:true,它会工作吗?