首页 > 解决方案 > 如何仅在使用猫鼬的数据库中没有文档时为数据库播种

问题描述

我有一个播种器功能,可以将数据播种到数据库中。当应用程序启动时,我也会运行播种机。现在我正在播种重复的数据。如何修改我的函数,以便仅在数据库集合中没有数据的情况下为数据库播种数据?

const importData = async () => {
    try {
        await ExhibitModel.create(exhibits);
        console.log("Data imported");
        process.exit();
    } catch (err) {
        console.error(err);
    }
}; 

标签: javascriptdatabasemongodbmongooseseeding

解决方案


不要使用插入。

使用更新upsert=true。_ 更新将查找与您的查询匹配的文档,然后它将修改您想要的字段,然后,upsert: true如果没有文档与您的查询匹配,您可以告诉它是否要插入。

db.collection.update(filter, update, {upsert:true})

推荐阅读