首页 > 解决方案 > 如果在bulkWrite期间mongodb中不存在记录,如何创建记录?

问题描述

服务器将接收大量数据。问题是如果数据库中不存在记录的字段名称,我需要创建记录。

我正在使用 mongoose 对 mongodb 执行操作。

db.getDb(async function (error, db) {
        await db._models.Model.bulkWrite(
          values.map((value) => {
            const instance = new db._models.Model({
              __v: 0,
            });
            return {
              updateOne: {
                filter: {
                  title: value,
                  _datasetId: dataset._id,
                },
                update: {
                  $set: {
                    _id: instance._id,
                    _datasetId: dataset._id,
                    title: tag,
                    createdBy: user._id,
                    createdAt: date,
                    updatedAt: date,
                    __v: instance.__v,
                  },
                },
                upsert: true,
              },
            };
          })
        );

我不想更新现有记录,但如果它不存在则创建记录。(如果存在带有 title 和 _datasetId 的记录,它应该跳过这些值)。

我怎样才能做到这一点?

标签: mongodbmongoose

解决方案


您已经设置 upsert:true ,如果 updateOne 找不到过滤器指定的文档,它将执行插入而不是更新...


推荐阅读