建站用wordpress 起飞了,聊城菜鸟网站建设公司,全屏企业网站,用蜗牛做logo的网站目录 save 方法
insert 方法
create 方法
使用会话和事务
总结 在本文中#xff0c;我们将介绍 MongoDB 中使用 mongoose 操作 数据库时的三种常见方法#xff1a;save、insert 和 create。这些方法可以用于将数据存储到 MongoDB 数据库中#xff0c;并且在一定程度上具…目录 save 方法
insert 方法
create 方法
使用会话和事务
总结 在本文中我们将介绍 MongoDB 中使用 mongoose 操作 数据库时的三种常见方法save、insert 和 create。这些方法可以用于将数据存储到 MongoDB 数据库中并且在一定程度上具有相似的功能。然而它们之间还存在一些差异和适用场景上的区别。下面我们将逐一进行讲解。
MongoDB 教程
save 方法
save 方法是 mongoose 中最常见的保存数据的方法它可以保存一个已经存在的文档也可以创建一个新的文档。当执行 save 方法时mongoose 会先判断数据是否已经存在于数据库中如果存在则更新数据如果不存在则创建新的数据。 下面是一个使用 save 方法操作数据库的示例
const mongoose require(mongoose);
const Schema mongoose.Schema;// 定义数据模式
const userSchema new Schema({name: String,age: Number,email: String
});// 定义数据模型
const User mongoose.model(User, userSchema);// 创建一个文档实例
const user new User({name: Tom,age: 28,email: tomexample.com
});// 保存数据到数据库
user.save().then(() {console.log(数据保存成功);}).catch(err {console.log(数据保存失败, err);});
insert 方法
insert 方法是一个底层的方法它可以用来一次保存多个文档到 数据库中。与 save 方法不同的是insert 方法不会触发 mongoose 定义的中间件和钩子函数速度更快。
下面是一个使用 insert 方法操作数据库的示例
const mongoose require(mongoose);
const Schema mongoose.Schema;// 定义数据模式
const userSchema new Schema({name: String,age: Number,email: String
});// 定义数据模型
const User mongoose.model(User, userSchema);// 创建多个文档实例
const users [{ name: Tom, age: 28, email: tomexample.com },{ name: Jerry, age: 25, email: jerryexample.com },{ name: Alice, age: 30, email: aliceexample.com }
];// 保存多个文档到数据库
User.insertMany(users).then(() {console.log(数据保存成功);}).catch(err {console.log(数据保存失败, err);}); create 方法
create 方法是一个可以同时创建并保存文档到数据库的方法。它与save 方法不同的是create 方法可以直接传入一个对象而不需要先创建文档实例。create 方法也会触发 mongoose 定义的中间件和钩子函数。
下面是一个使用 create 方法操作数据库的示例 使用会话和事务
除了传递对象数组之外create() 还支持传入单个对象或对象的扩展。例如下面是创建多个文档的另一种方法。
// 保存两个新文档。
await User.create({ name: O.O }, { name: D.O })
不幸的是如果您想将选项传递给 create() 方法比如您想使用 transactions扩展语法会导致语法歧义。例如下面的代码将尝试创建两个文档而不是将第二个参数视为 options 对象。
const session await User.startSession()
await session.withTransaction(async () {// 注意以下内容将不工作它不是创建一个带有关联 session 的文档而是创建两个没有 session 的文档await User.create({ name: D.O }, { session })
}) 因此如果要在事务中使用 create()则必须将文档作为数组传递即使只创建一个文档也是如此。
const session await User.startSession()
await session.withTransaction(async () {// 使用给定 session 创建一个文档。await User.create([{ name: D.O }], { session })
})
总结
以上我们介绍了 MongoDB 中 mongoose 的 save、insert 和 create 方法的使用。在选择方法时可以根据实际需求和场景进行选择。 save 方法可用于保存已经存在的文档或新创建的文档触发中间件和钩子函数。insert 方法适用于批量插入文档速度较快不触发中间件和钩子函数。create 方法适用于直接创建并保存文档触发中间件和钩子函数。
根据具体情况选择合适的方法可以更加高效地操作和管理 MongoDB 数据库中的数据。