【问题标题】:How to seed a database only when there is no documents in the database using mongoose仅当数据库中没有使用 mongoose 的文档时如何为数据库播种
【发布时间】:2026-01-22 02:50:01
【问题描述】:

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

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

【问题讨论】:

  • 您能否将数据库播种作为部署管道的一部分,而不是将其包含在您的应用程序中?
  • 或许,如果之前存在任何文档(使用 findOne 之类的方法),您可以查询该集合。

标签: javascript database mongodb mongoose seeding


【解决方案1】:

不要使用插入。

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

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

【讨论】: