深度剖析 MongoDB 与 Mongoose

MongoDB 是一种基于文档的 NoSQL 数据库,其非常适合用于处理大量数据。同时,Mongoose 是一个优秀的 Node.js 的 ODM 框架,可以帮助我们更加便捷地使用 MongoDB 数据库。在这篇文章中,我们将深度剖析 MongoDB 与 Mongoose,并为您提供学习和指导意义。

MongoDB

MongoDB 是一个可扩展的高性能、开源、面向文档的 NoSQL 数据库。由于其易于使用和快速迭代开发,它已经成为开发人员的首选。它采用 Bson 格式存储数据,支持索引、复杂查询等功能。此外,MongoDB 还具有很好的扩展性,容易在大型集群中运行。

安装 MongoDB

要安装 MongoDB,您可以按照以下步骤进行:

  1. 下载 MongoDB:在 MongoDB 官网上下载安装文件。

  2. 安装 MongoDB:将 MongoDB 安装在您的本地机器上,可以使用默认设置,也可以根据需要自定义设置。

  3. 启动 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 命令:

连接到 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


纠错反馈