首页 > 解决方案 > 使用 mongoose 将数据插入 MongoDb

问题描述

我有一个字符串数组,我想映射这个数组并用它的值更新我的集合。

这是我尝试过的:

 if (employees) {
      employees.map((employee) => {
        Employee.updateOne({ $push: { name: employee.name } })
          .then((data) => {
            console.log(data);
          })
          .catch((e) => {
            console.log(e);
          });
      });
    }

在顶部,我正在导入我的模型:

const Employee = require('../../models/employees');

我的模型看起来像这样:

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const EmployeeSchema = new Schema({
  name: { type: String },
});

const Employee = mongoose.model('employee', EmployeeSchema);

module.exports = Employee;

我的控制台正在记录下一个:

{ n: 0, nModified: 0, ok: 1 }

但是当我检查数据库时,数据不存在并且没有创建集合。

标签: javascriptmongodbmongoose

解决方案


updateOne具有以下语法

  1. 第一个参数是condition/filter
  2. 第二个参数doc要更新。
  3. 第三是options。你需要传递upsert给真实的地方。

注意:如果upsert设置为truethen将在结果为空updateOne时创建新的。docfilter

const insertEmployees = () => {
  try {
    if (employees) {
      employees.map(async employee => {
        let filter = { name: employee.name }
        let doc = { $push: { name: employee.name } }
        let options = { upsert: true }
        await Employee.updateOne(filter, doc, options)
      });
    }
  } catch (error) {
    console.log(error);
  }
}

推荐阅读