【问题标题】:How to create record if it does not exist in mongodb during bulkWrite?如果在bulkWrite期间mongodb中不存在记录,如何创建记录?
【发布时间】:2021-04-27 07:42:28
【问题描述】:

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

我正在使用 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的记录,它应该跳过这些值)。

我怎样才能做到这一点?

【问题讨论】:

    标签: mongodb mongoose


    【解决方案1】:

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

    【讨论】:

    • 这是真的,但问题是我不需要更新记录...
    • 如果你只想插入,你可以做 insertOne
    • 批量写入会有用吗?因为我不想执行数百个数据库调用..
    猜你喜欢
    • 2018-02-05
    • 2020-08-10
    • 1970-01-01
    • 1970-01-01
    • 2018-10-04
    • 2016-01-13
    • 1970-01-01
    • 2014-04-04
    • 1970-01-01
    相关资源
    最近更新 更多