Mongoose Document Model.insertMany()函数
使用 Model.insertMany() 方法可以一次性在集合中插入多个文档。我们可以提供一个对象数组给 insertMany() 方法,并在模型对象上执行。Mongoose会对数组中的所有对象进行验证,如果任何对象存在验证错误,则不会插入任何对象或文档。
语法:
Model.insertMany()
参数:
Model.insertMany() 方法接受三个参数:
- docs: 它是一个包含将要插入集合的对象数组。
- options: 它是一个包含各种属性的对象。
- callback: 它是一个执行完成后将运行的回调函数。
返回值:
Model.insertMany() 函数返回一个 Promise 对象。结果包含一个包含已插入到数据库中的文档详细信息的对象数组。
设置 Node.js 应用程序:
步骤1:
使用以下命令创建一个 Node.js 应用程序:
npm init
步骤2: 创建NodeJS应用程序后,使用以下命令安装所需的模块:
npm install mongoose
项目结构: 项目结构将如下所示:
数据库结构:
数据库结构将如下所示,以下文件存在于集合中。
示例1: 在这个示例中,我们使用mongoose建立了一个数据库连接,并在userSchema上定义了一个模型,有两个列或字段“name”和“age”。最后,我们在User模型上使用了 insertMany() 方法,它将在一次执行中插入三个文档。我们创建了一个包含要插入User集合的文档对象数组。
- app.js: 将以下代码写入app.js文件中:
// Require mongoose module
const mongoose = require('mongoose');
// Set Up the Database connection
mongoose.connect(
'mongodb://localhost:27017/geeksforgeeks', {
useNewUrlParser: true,
useUnifiedTopology: true
})
const userSchema = new mongoose.Schema(
{ name: String, age: Number }
)
// Defining userSchema model
const User = mongoose.model('User', userSchema);
const docs = [{ name: "User4", age: 40 },
{ name: "User5", age: 50 },
{ name: "User6", age: 60 }]
User.insertMany(docs).then(result => {
console.log(result)
})
运行程序的步骤: 从项目的根目录执行以下命令来运行应用程序:
node app.js
输出:
[
{
name: 'User4',
age: 40,
_id: new ObjectId("6316f866e10eb7753ec68911"),
__v: 0
},
{
name: 'User5',
age: 50,
_id: new ObjectId("6316f866e10eb7753ec68912"),
__v: 0
},
{
name: 'User6',
age: 60,
_id: new ObjectId("6316f866e10eb7753ec68913"),
__v: 0
}
]
使用Robo3T GUI工具的数据库的GUI表示:
示例2: 在这个示例中,我们使用mongoose建立了一个数据库连接,并在studentSchema上定义了模型,它具有三个列或字段“name”、“school”和“class”。在这个示例中,我们尝试在一次执行中插入两个文档,但是“class”字段的值(数组的第一个对象)与模式中定义的类型不匹配,这将导致验证错误,并且没有文档会被插入到数据库中。结果是你会得到一个验证错误,并且在数据库中不会插入任何文档。
- app.js: 在app.js文件中写下以下代码:
// Require mongoose module
const mongoose = require("mongoose");
// Set Up the Database connection
mongoose.connect("mongodb://localhost:27017/geeksforgeeks", {
useNewUrlParser: true,
useUnifiedTopology: true,
});
const studentSchema = new mongoose.Schema({
name: String,
school: String,
class: Number,
});
// Defining studentSchema model
const Student = mongoose.model("Student", studentSchema);
Student.insertMany([
{ name: "Student1", school: "ABC", class: "A1" },
{ name: "Student2", school: "ABC", class: "A2" },
]).then((result) => {
console.log(result);
});
运行程序的步骤: 从项目的根目录中执行以下命令来运行应用程序:
node app.js
输出:
UnhandledPromiseRejectionWarning: ValidationError:
Student validation failed: class: Cast to Number failed for value
"A1" (type string) at path "class"
使用Robo3T GUI工具的数据库的GUI表示:
参考: https://mongoosejs.com/docs/api/model.html#model_Model-insertMany