MongoDB使用实际很简单

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
简介: MongoDB是个文档型数据库,虽然前有CouchDB夹击,后有MySQL 8.x文档支持的追赶,但是丝毫不影响它在市场中占据的份额。

MongoDB是个文档型数据库,虽然前有CouchDB夹击,后有MySQL 8.x文档支持的追赶,但是丝毫不影响它在市场中占据的份额。

前言

最近有个开发妹子跟我说MongoDB的操作好复杂,先是跟以往关系型数据库的操作不一样,后是在Windows上操作实在是各种烦心和不容易。于是,花了点时间写了个爱心版的教程。

总体而言,MongoDB的操作并不算多么复杂,只是没有理解它的作用还有就是用错了平台。像MongoDB这样的数据库还是使用Linux比较妥当,直接几个命令就解决了。还有,开发最好还是用Mac,比较省心。

闲话不说,还是从头开始说起,一步步起来,大概20分钟就上路了。

环境搭建

既然要使用MongoDB自然离不开环境的搭建,对于Linux的源可以选择:

  • 官方, http://repo.mongodb.org/
  • 阿里云, http://mirrors.aliyun.com/mongodb/

而要下载的是二进制的版本,对于Windows其对应的地址为 https://www.mongodb.org/dl/win32/,而Linux为 https://www.mongodb.org/dl/linux/x86_64。进去下载你需要的版本就好。

这里选择下载的是Windows的3.x版本。下载完成后,解压到你喜欢的1个地方,接着为了方便操作,打算文本编辑器,写2个启动脚本。省的每次都手动输入一大段参数。

Windows启动脚本

创建1个 start.bat的批处理脚本,其内容如下:

@echo off
SET PATH=%PATH%;D:Program FilesMongoDBServer.6in
mongod -f db.conf

其中PATH这部分后面,将它替换为你实际解压的目录中。其中,在命令mongod中使用选项 -f指定对应的配置文件,省的每次都要手动在命令行中指定参数。而MongoDB是支持YAML格式的配置的,而这里还是以INI的格式来配置参数。

而配置文件中内容如下:

dbpath=D:/mongodb-database
logappend=true
port=27017
bind_ip=127.0.0.1

其中dbpath指定了MongoDB中数据库的路径。默认情况下是当前解压目录盘符下data目录,如果对应目录不存在或不为空,直接就是闪退,无法启动数据库程序了。

之后的logappend用于日志的追加输出,至于port和bind_ip自然是监听的端口和地址了。

Windows停止脚本

既然编写了1个启动脚本,无妨也写1个bat脚本用于停止数据库服务器,其内容如下:

@echo off
SET PATH=%PATH%;D:Program FilesMongoDBServer.6in
mongo mongod_stop.js

唯一的区别是最后1行,使用的是mongo程序,后面紧着着1个js文件。而在对应 mongod_stop.js中内容如下:


db = connect("localhost:27017/admin");
db.shutdownServer();
quit();

而这段代码的意义就是连接到对应的admin数据库中,调用其shutdownServer方法关闭服务器,最后退出程序。当然,这里并没有设置对应的认证信息。而在本地环境上,即使使用createUser设置了认证方式,也是不起效的。详情可以查看 https://docs.mongodb.com/manual/reference/method/db.createUser/#local-database

对于远程服务器,则必须添加权限认证,否则任何人都可以访问你的数据库服务器了。而对应的方式如下所示。

权限认证

要进入需要认证的数据库中,需要调用 db.createUser创建用户,例如:

db.createUser({user:"test",pwd:"123456",roles:[{role:"readWrite",db:"test"}]})

这里创建了1个test的用户,密码为123456。该用户属于的角色为readWrite组,分配的数据库为test。

之后可以通过如下的语句进行权限认证:

db.auth({user:"test",pwd:"123456"})

更多内容可以访问 https://docs.mongodb.com/manual/reference/method/db.createUser/

MongoDB概念

MongoDB数据库中概念,实际上中没有多少东西。排开什么分片、地理索引等附加内容外,唯一的东西应该就是文档了。然而,它这里的文档与我们常见的文本格式还是有区别的。

在MongoDB中的文档格式就是类似1个JSON的格式,比如:

{
"name": "张三",
"age": 20,
"sex": "男"
}

而对应的关系型数据库中表的概念是根本不存在的,但是我们可以将上述这样1个文档看成是关系型数据库中的1张表。而其中的name、age以及sex字段看成是关系型数据库的列字段。当然二者并不是等价的。

而为了能存储上述的内容,我们需要创建1个文档,比如将它命名为1个 user.json的文件。然而在MongoDB中这样1个文件可以将其看成是关系型数据库中的数据库名称。

简单的说,就是类似下表所示的关系:

关系型数据库 MongoDB
数据库 文档名称
文档内容
文档字段

至于索引什么的,基本上一般数据库都会提供,这属于数据压缩及信息论范畴中的内容了,就不展开说明了。

MongoDB操作

实际上,MongoDB中的指令操作与MySQL很类似,比如查看数据库的操作为:

show databases;

而查看有哪些数据表,使用的是 show collections而不是 show tables。但是MongoDB中提供了1个 show tbs

需要注意的是,在MongoDB中采用了1种延缓加载机制,只有存在数据才生成文档。换句话说,只有往某个文档中插入了数据才会生成对应的集合(关系型数据库中的表),否则你查看数据表中是获取不到对应期望的结果的。

而对于查询操作,可以使用如下的语法:

db.表名.find()                  #方法一
db.表名.find({"字段":"值"})      #方法二

对于方法一,等同于 select*from表名,而对于后者等同于 select*from表名where字段=

另1个很有用的技巧就是,默认输出的文档是没有格式处理的,为了方便查看效果,常常需要使用格式化输出,此时可以在选择后追加1个pretty方法,即:

db.表名.find().pretty()

如果实在不知道该调用什么方法,可以使用help方法来查看,即:

db.表名.help()
db.help()

之后MongoDB会将内置js中的内容输出。

最后是CRUD对应的方法:

  • insert,插入
  • remove,删除
  • update,更新
  • find,查询

这样,基本上MongoDB就算入门了。更多的内容,还是等到需要的时候再慢慢摸索吧。

参考:

https://www.cnblogs.com/gy-ph/p/7725172.html

本文作者:风中纸鹞,1个多年滚打于Web开发的研发工程师。熟悉PHP、Java、C++等编程语言,以编程作为乐趣。

声明:本文为 脚本之家专栏作者 投稿,未经允许请勿转载。

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
NoSQL 安全 数据库连接
MongoDB 常见使用
MongoDB 常见使用
507 0
MongoDB 常见使用
|
2月前
|
存储 监控 NoSQL
MongoDB介绍
MongoDB介绍
40 1
|
NoSQL MongoDB
mongodb
mongodb
46 0
|
11月前
|
存储 NoSQL MongoDB
关于MongoDB
关于MongoDB
139 0
|
存储 NoSQL 定位技术
MongoDB的特点
MongoDB的特点
420 1
|
存储 NoSQL 关系型数据库
什么时候选择MongoDB
什么时候选择MongoDB
90 2
|
NoSQL 前端开发 MongoDB
MongoDB应用
初始化路由模板 数据库和前端页面交互 编写注册的后台接口 先连接数据库 和前台进行数据交互 文章的后台接口 先查询所有的文章内容 发文章 一些验证方法 邮箱验证 用户名随机生成
67 0
|
NoSQL Shell Linux
|
存储 SQL NoSQL
mongoDB(二)
mongoDB
93 0
|
JSON NoSQL MongoDB
初学mongoDB(一)
初学mongoDB
79 0