在添加到Mongoose MongoDB时过滤掉重复项

时间:2014-09-07 11:47:11

标签: javascript node.js mongodb mongoose

我的硬盘上有一个.json文件,大约有70个条目。

这是我使用的模型:

var tweetModel = mongoose.model('tweet', {
    "correct":Boolean,
    "text": String,
    "id":{type:String, unique:true},
    "user":{
        "atNamn":String,
        "namn":String,
        "bild":String,
        "id":String
}
});

有些推文是重复的,因此共享相同的" id"属性。我想在添加时过滤掉这些内容。目前我只是通过这样的JSON。

var JSONData = require("../public/data/jsondata")
for(key in JSONData){
    new tweetModel(JSONData[key]).save(function(err,doc){
        if(err){console.log(err)}
        else{
            console.log(doc);
        }
    })
}

如果我一次运行,他们都会被添加。如果我再次这样做,则会引发重复错误。我希望它在添加之前检查重复项!

1 个答案:

答案 0 :(得分:1)

使用简单的JS对象来跟踪您已经看过的id个值:

var seenIds = {};
for(key in JSONData){
    var json = JSONData[key];
    if (!seenIds[json.id]) {
        seenIds[json.id] = true;
        new tweetModel(json).save(function(err,doc){
            if(err){console.log(err)}
            else{
                console.log(doc);
            }
        });
    }
}