MongoDB 是一种基于文档的 NoSQL 数据库,其非常适合用于处理大量数据。同时,Mongoose 是一个优秀的 Node.js 的 ODM 框架,可以帮助我们更加便捷地使用 MongoDB 数据库。在这篇文章中,我们将深度剖析 MongoDB 与 Mongoose,并为您提供学习和指导意义。
MongoDB
MongoDB 是一个可扩展的高性能、开源、面向文档的 NoSQL 数据库。由于其易于使用和快速迭代开发,它已经成为开发人员的首选。它采用 Bson 格式存储数据,支持索引、复杂查询等功能。此外,MongoDB 还具有很好的扩展性,容易在大型集群中运行。
安装 MongoDB
要安装 MongoDB,您可以按照以下步骤进行:
下载 MongoDB:在 MongoDB 官网上下载安装文件。
安装 MongoDB:将 MongoDB 安装在您的本地机器上,可以使用默认设置,也可以根据需要自定义设置。
启动 MongoDB:打开命令行,输入命令
mongod
来启动 MongoDB 服务。
数据库和集合
MongoDB 中数据的存储结构非常灵活,其中的所有数据存储在称为“集合”(Collection)的文档中。集合是持久化的,与关系型数据库中的表类似。每个集合都有自己的名称,每个文档都从一个唯一的 _id
字段开始。 MongoDB 中的数据模型是文档模型,它采用了类似 JSON 的文档格式来存储数据。
CRUD 操作
MongoDB 中的 CRUD 操作是指 Create(创建)、Read(读取)、Update(更新)和 Delete(删除)这四个基本操作。以下是这些操作的代码示例:
// 引入 mongodb 包 const { MongoClient } = require('mongodb'); // 连接 MongoDB server const url = 'mongodb://127.0.0.1:27017' const dbName = 'test'; const client = new MongoClient(url, { useNewUrlParser: true }); client.connect(function(err) { const db = client.db(dbName); // CREATE db.collection('users').insertOne({ name: 'Lucas', age: 28 }, (err, res) => { if (err) throw err; console.log("1 user inserted"); }); // READ db.collection('users').find({}).toArray((err, result)=>{ if (err) throw err; console.log(result); }); // UPDATE db.collection('users').updateOne({ name:"Lucas" }, { $set: { age: 29 } }, (err, result)=>{ if (err) throw err; console.log("1 document updated"); }); // DELETE db.collection('users').deleteOne({name: "Lucas"}, (err, result)=>{ if (err) throw err; console.log("1 document deleted"); }) // 关闭数据库连接 client.close(); });
Mongoose
Mongoose 是一个优秀的 Node.js 的 ODM 框架,可以帮助我们更加便捷地使用 MongoDB 数据库。
安装 Mongoose
要安装 Mongoose,可以使用 npm 命令:
npm install mongoose
连接到 MongoDB
在使用 Mongoose 之前,需要与 MongoDB 建立连接。这可以通过以下方式完成:
// 引入 mongoose const mongoose = require('mongoose'); // 连接 MongoDB,使用指定的 URL、选项和回调函数 const url = 'mongodb://127.0.0.1:27017/test'; mongoose.connect(url, { useNewUrlParser: true }) .then(() => console.log('连接成功')) .catch((err) => console.log(err))
定义集合
在 Mongoose 中,每个集合都是一个模型(Model)。该模型定义了集合中的文档结构、默认值、验证规则等等。以下是一个示例:
// 引入 mongoose const mongoose = require('mongoose'); // 定义 UserSchema const UserSchema = new mongoose.Schema({ name: String, age: Number, email: String, createdAt: { type: Date, default: Date.now } }); // 导出 User 模块 module.exports = mongoose.model('User', UserSchema);
在此示例中,我们使用 mongoose.Schema
定义了一个名为 UserSchema
的集合。集合中包含了 name、age、email 和 createdAt 属性。其中,createdAt 属性默认为创建时间。我们使用 mongoose.model
方法将集合和模型绑定在一起,并将它们导出供其他文件使用。
CRUD 操作
通过定义集合的模型,我们可以使用 Mongoose 来进行 CRUD 操作。以下是这些操作的代码示例:
// 引入 User 模块 const User = require('./models/User'); // CREATE const user = new User({ name: 'Lucas', age: 28, email: 'lucas@example.com' }); user.save() .then(() => { console.log('添加成功'); }) .catch((err) => { console.log(err); }); // READ User.find({}) .then((users) => { console.log(users); }) .catch((err) => { console.log(err); }); // UPDATE User.updateOne({ name: 'Lucas' }, { $set: { age: 29 } }) .then(() => { console.log('更新成功'); }) .catch((err) => { console.log(err); }); // DELETE User.deleteOne({ name: 'Lucas' }) .then(() => { console.log('删除成功'); }) .catch((err) => { console.log(err); });
总结
在这篇文章中,我们深度剖析了 MongoDB 和 Mongoose。您应该能够了解到 MongoDB 提供的数据存储结构、CRUD 操作和高可扩展性。同时,Mongoose 可以帮助我们更加便捷地使用 MongoDB 数据库,使用它进行 CRUD 操作,还可以定义集合的模型。我们希望这篇文章能够帮助您更加深入地了解 MongoDB 和 Mongoose,并体验到它们的强大特性。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65a8f909add4f0e0ff23fed8