0

我尝试编写一个将国家/地区插入猫鼬数据库的程序。所有国家都保存在一个 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,它会工作吗?

4

0 回答 0