我从一个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);
});
})();
答案 0 :(得分:2)
仅在url
上的架构中创建一个unique index,例如:
var YourSchema = new Schema({
url: {
type: String,
unique: true,
index: true
},
title: String
//...
});
由于url
在SO
中应该是唯一的,因此您实际上不需要复合索引。