猫鼬避免重复实体

时间:2013-10-18 05:22:16

标签: javascript mongodb mongoose

我尝试编写一个将国家/地区插入mongoose数据库的程序。所有国家/地区都保存在xml文件中,并且是utf-8编码的。

首先,我从xml文件中读取所有国家/地区并将其保存在数组中。 countries数组看起来像这样

[ { 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' } ]

然后我用mongoose创建国家架构,看起来像这样

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,它会起作用吗?

0 个答案:

没有答案