大前端养成之路:学一点MongoDB(一)

速通MongoDB基础知识

MongoDB是一种非关系型数据库,与传统的关系型数据库相比,其数据结构更加灵活、可扩展性更高,支持更多的数据类型和数据操作,同时也具有更好的性能和可伸缩性。了解MongoDB基础知识可以帮助我们更好地设计和优化数据模型,提高应用性能和可扩展性,也有助于理解后端开发中的一些概念和技术。
大前端养成之路:学一点MongoDB(一)_第1张图片

1-NoSQL数据库介绍

NoSQL是指非关系型数据库,与传统的关系型数据库相对应。在NoSQL数据库中,数据是以键值对、文档、列族或图形等方式进行存储,而非传统的二维表格的形式。

相比于传统的关系型数据库,NoSQL数据库具有更好的可扩展性、更好的性能和更高的灵活性。常见的NoSQL数据库有MongoDB、Cassandra、Redis、Couchbase等。我在百度上找了个图,形象地展现两个数据库的差异(如有侵权,请联系我删除)

大前端养成之路:学一点MongoDB(一)_第2张图片
可以将传统数据库比喻为图书馆,每本书都有明确的编号、分类、位置等信息,检索和管理起来比较繁琐。而 NoSQL 数据库则可以比喻成一个散乱的书房,书籍没有明确的编号和分类,但可以根据需要进行快速检索和管理,使用起来更加灵活和便捷。

也就是说,传统数据库像是一份结构化的问卷,填写和查询都需要按照规定的格式,而 NoSQL 数据库则像是自由格式的笔记本,更适合处理非结构化和大规模数据。

2-MongoDB的概念和特点

MongoDB是一个面向文档的数据库,以JSON格式存储数据,具有丰富的查询语言和高性能的读写能力,同时也支持数据的自动分片和多副本部署等功能,可以轻松应对大规模数据的处理。具有以下几大特点

2.1-非关系型数据库

MongoDB是一种非关系型数据库,也被称为NoSQL数据库,与传统的关系型数据库不同,MongoDB的文档可以有不同的结构,可以嵌套和扩展字段,使得数据建模更加灵活和自由。

2-2文档存储

MongoDB的数据是以文档的形式存储,每个文档是一个键值对的集合,类似于JSON格式,可以嵌套子文档,支持数组类型的字段。MongoDB支持多种数据类型,包括文本、数值、日期、数组、对象等。

2.3-分布式存储

MongoDB支持分布式存储,可以通过横向扩展来实现高可用性和可扩展性,通过数据分片的方式,将数据分散存储在多个节点上,从而提高数据的可用性和性能。

2.4-高性能

MongoDB具有高性能的特点,可以支持快速的读写操作,同时支持复杂的查询语句和索引,提供了多种查询方式和排序方式。

2.5-可扩展性

MongoDB的架构设计可以很好地支持横向扩展,可以通过增加节点来扩展数据存储和处理能力,从而适应不断增长的数据规模和访问量。

2.6-数据安全

MongoDB提供了安全认证机制和数据加密等安全措施,可以保障数据的安全性和完整性。

3-MongoDB的安装和配置

我的技术栈是js,下面用win电脑和node.js举个例子

3.1-下载并安装MongoDB

在MongoDB官网下载对应操作系统的安装包,按默认配置傻瓜式安装即可。

https://www.mongodb.com/docs/manual/

3.2-配置环境变量

在操作系统的环境变量中添加MongoDB的安装路径

C:\Program Files\MongoDB\Server\5.0\bin。

3.3-创建数据存储目录

创建data的目录,在该目录下创建两个空文件夹db和logs,用于存储数据库文件和日志文件。

D:\MongoDB\data\db
D:\MongoDB\data\logs

3.4-启动MongoDB服务

在终端或命令行窗口中输入命令mongod

mongod

启动MongoDB服务,如果启动失败,需要检查是否有其他程序占用了MongoDB默认的端口号(27017),可以在启动命令中指定端口号

mongod --port 

3.5-连接MongoDB

如果连接失败,需要检查连接参数是否正确,例如是否指定了正确的IP地址和端口号

mongo --host  --port 

3.6-node.js案例

const MongoClient = require('mongodb').MongoClient;

const uri = "mongodb://localhost:27017/mydb";

MongoClient.connect(uri, function(err, db) {
  if (err) throw err;
  const dbo = db.db("mydb");
  dbo.collection("customers").findOne({}, function(err, result) {
    if (err) throw err;
    console.log(result);
    db.close();
  });
});


4-MongoDB的基本操作和命令行操作

连接MongoDB成功后,我们就可以开始进行基本操作了,也就是增删改查。下面是一些常用的命令行操作:

4.1-插入数据

向当前集合中插入一条文档,document为一个JSON对象,表示需要插入的数据

db.collection.insert(document)

使用insertOne就是插入一条数据,如果需要插入多条文档就用insertMany方法

db.collection('users').insertOne({name: 'John', age: 30});
db.collection('users').insertMany([{name: 'Jane', age: 25}, {name: 'Jack', age: 35}]);

4.2-查询数据

使用find方法来查询数据,可以通过指定条件来筛选出符合条件的数据

db.collection.find(query, projection):

查询当前集合中的文档,query为查询条件,projection为可选参数,表示需要返回的字段。查询条件和返回字段都可以使用MongoDB的查询操作符进行设置。

db.collection('users').find({age: {$gt: 25}});

其中, g t 表示大于, gt表示大于, gt表示大于,lt表示小于,$eq表示等于等等。

4.3-更新数据

db.collection.update(query, update, options)

更新当前集合中符合条件的文档,query为查询条件,update为需要更新的字段,options为可选参数,用于设置更新操作的一些属性。也可以使用updateOne或updateMany方法来更新数据

db.collection('users').updateOne({name: 'John'}, {$set: {age: 40}});
db.collection('users').updateMany({age: {$lt: 30}}, {$set: {age: 30}});

4.4-删除数据

db.collection.delete(query)

删除当前集合中符合条件的文档,query为查询条件,同样地,也可以使用deleteOne或deleteMany方法来删除数据

db.collection('users').deleteOne({name: 'John'});
db.collection('users').deleteMany({age: {$lt: 30}});

4.5 -其他命令

// 删除当前所在的数据库
db.dropDatabase()  

// 创建一个集合(类似于传统数据库中的表),name为集合名称,options为可选参数,用于设置集合的一些属性
db.createCollection(name, options)

// 删除当前集合
db.collection.drop()

// 使用聚合管道对当前集合进行聚合操作。聚合管道是一系列的聚合阶段,每个阶段都对输入文档进行转换,然后将转换结果传递给下一个阶段。
db.collection.aggregate(pipeline)

// 为当前集合中的文档创建索引,keys为需要创建索引的字段,options为可选参数,用于设置索引的一些属性。索引可以提高查询性能。
db.collection.ensureIndex(keys, options)

这些命令行操作只是MongoDB的冰山一角,还有很多高级用法和命令可以深入学习。

你可能感兴趣的:(mongodb,前端,数据库)