javascript - 使用 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 }
但是当我检查数据库时,数据不存在并且没有创建集合。
解决方案
updateOne
具有以下语法。
- 第一个参数是
condition/filter
。 - 第二个参数
doc
要更新。 - 第三是
options
。你需要传递upsert
给真实的地方。
注意:如果upsert
设置为true
then将在结果为空updateOne
时创建新的。doc
filter
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);
}
}
推荐阅读
- powershell - 如何在 PowerShell 中 Ping DirectAccess IPSec 隧道端点?
- json - 当切片是响应的一部分时,将嵌套数据响应展开为结构
- c++ - Boost_1_72_0 错误:宏“test”传递了 2 个参数,但只需要 1 个
- sql - SQL Server 错误 - 转换溢出 int
- postgresql - 不使用 union 同时查看两个 SQL 表
- sql - 单个配置单元查询以删除数据中的某些文本
- php - 当 PHP 删除文件上的 Active 不等于 No 时需要一条消息
- c# - {0} 等占位符的位置在阿拉伯语文本中发生变化
- javascript - 从下拉列表中获取所选选项的值
- python - Python 请求抛出“证书验证失败:无法获取本地颁发者证书”错误