当您拥有新文档和现有文档的JSON数组时,是否存在仅将新文档添加到数据库的功能?

时间:2019-05-23 16:30:58

标签: node.js mongoose

我从一个API中获取JSON数据,该API会定期使用新对象进行更新。不出所料,每当我运行该函数以从API获取信息,然后将其插入到数据库中时,数据库就会再次添加所有文档。

有没有一种方法可以仅将API中的任何新对象添加为文档,而忽略任何现有文档。

我知道每次都会创建一个新的ObjectID,因此实际上它们永远不会重复。我已经研究了复合索引,但是无法解决这个问题。



    let feed = await parser.parseURL('https://stackoverflow.com/jobs/feed?location=london&q=graduate');

    var importantSOInfo = [];

    const handleError = function() {
        console.error(err);
        // handle your error
    };

    feed.items.map(job => {

        job = new Job ({
            title: job.title,
            url: job.link,
            categories: job.categories,
        });

        importantSOInfo.push(job);
    });

    Job.insertMany(importantSOInfo, function(err) {
        console.log(err);
    });

})();

1 个答案:

答案 0 :(得分:2)

仅在url上的架构中创建一个unique index,例如:

var YourSchema = new Schema({
    url: { 
        type: String, 
        unique: true,
        index: true
    },
    title: String
    //...
});

由于urlSO中应该是唯一的,因此您实际上不需要复合索引。