【MongoDB】Re01 安装与基础操作
Linux安装
官网下载红帽安装版
#下载三个rpm包 wget https://mirrors.tuna.tsinghua.edu.cn/mongodb/yum/el7-4.2/RPMS/mongodb-org-tools-4.2.8-1.el7.x86_64.rpm wget https://mirrors.tuna.tsinghua.edu.cn/mongodb/yum/el7-4.2/RPMS/mongodb-org-server-4.2.8-1.el7.x86_64.rpm wget https://mirrors.tuna.tsinghua.edu.cn/mongodb/yum/el7-4.2/RPMS/mongodb-org-shell-4.2.8-1.el7.x86_64.rpm
然后安装
#安装包 sudo rpm -ivh mongodb-org-server-4.2.8-1.el7.x86_64.rpm sudo rpm -ivh mongodb-org-shell-4.2.8-1.el7.x86_64.rpm sudo rpm -ivh mongodb-org-tools-4.2.8-1.el7.x86_64.rpm
更改配置的IP绑定,使其支持远程访问
# 修改配置文件,这样就可以远程连接 sudo vi /etc/mongod.conf # 把bindIp: 127.0.0.1改成 bindIp: 0.0.0.0
相关的服务命令:
# 启动服务
service mongod start
# 关闭服务
service mongod stop
# 重启服务
service mongod restart
# 设置开机自启动
systemctl enable mongod.service
命令操作:
登陆mongoDB
# 登陆本机实例 mongo # 或者登陆远程实例 mongo --host=centos7-03 --port=27017
登陆成功展示mongoDB实例的信息:
[root@centos7-02 mongo-db]# mongo MongoDB shell version v4.2.8 connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb Implicit session: session { "id" : UUID("e581b090-f450-4a25-acef-93ddbd85d630") } MongoDB server version: 4.2.8 Welcome to the MongoDB shell. For interactive help, type "help". For more comprehensive documentation, see http://docs.mongodb.org/ Questions? Try the support group http://groups.google.com/group/mongodb-user Server has startup warnings: 2022-02-02T13:05:37.482+0800 I CONTROL [initandlisten] 2022-02-02T13:05:37.482+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database. 2022-02-02T13:05:37.482+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted. 2022-02-02T13:05:37.482+0800 I CONTROL [initandlisten] 2022-02-02T13:05:37.483+0800 I CONTROL [initandlisten] 2022-02-02T13:05:37.483+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. 2022-02-02T13:05:37.483+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never' 2022-02-02T13:05:37.483+0800 I CONTROL [initandlisten] 2022-02-02T13:05:37.483+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'. 2022-02-02T13:05:37.483+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never' 2022-02-02T13:05:37.483+0800 I CONTROL [initandlisten] --- Enable MongoDB's free cloud-based monitoring service, which will then receive and display metrics about your deployment (disk utilization, CPU, operation statistics, etc). The monitoring data will be available on a MongoDB website with a unique URL accessible to you and anyone you share the URL with. MongoDB may use this information to make product improvements and to suggest MongoDB products and deployment options to you. To enable free monitoring, run the following command: db.enableFreeMonitoring() To permanently disable this reminder, run the following command: db.disableFreeMonitoring() --- >
一、库操作:
查看实例中已经持久化的所有库:
# show dbs # show databases ######################################### > show dbs admin 0.000GB config 0.000GB db-01 0.000GB local 0.000GB ######################################### > show databases admin 0.000GB config 0.000GB db-01 0.000GB local 0.000GB
默认库:
admin: 从权限的角度来看,这是"root"数据库。 要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。 一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。 local: 这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合 config: 当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息
切换库 use '库名' ,如果库不存在则创建该库并切换
> use db-03 switched to db db-03
库名的一些声明规范
# 数据库名称设置要求 - 不能是空字符串("")。 - 不得含有' '(空格)、.、$、/、\和\0 (空字符)。 - 应全部小写。 - 最多64字节。
这个库还只存在于内存中,因为库里没有任何表(集合),没有任何存储的数据
mongoDB就不会持久化到硬盘中,如何证明?
再次查询所有库,会发现切换的db-03库在列表中不存在
> show dbs admin 0.000GB config 0.000GB db-01 0.000GB local 0.000GB
删除当前正在使用的数据库(持久化了的才有效):
db.dropDatabase()
刚刚的db-03只存在与内存中,未持久化,执行不会影响
> use db-03 switched to db db-03
> show dbs admin 0.000GB config 0.000GB db-01 0.000GB local 0.000GB
> db.dropDatabase() { "ok" : 1 }
> show dbs admin 0.000GB config 0.000GB db-01 0.000GB local 0.000GB
如果是持久的db-01,则会被删除
> show dbs admin 0.000GB config 0.000GB db-01 0.000GB local 0.000GB > use db-01 switched to db db-01 > db.dropDatabase() { "dropped" : "db-01", "ok" : 1 } > show dbs admin 0.000GB config 0.000GB local 0.000GB
修改库名:
MongDB没有直接修改库名的操作
可以借助集合改名或者创建新库持久化后,删除原库实现
https://blog.csdn.net/chandoudeyuyi/article/details/80038743
二、集合(表)操作
> db.createCollection('table-01') { "ok" : 1 }
查看当前库下所有的集合
# show collections # show tables > show collections table-01 > show tables table-01
集合命名规范:
集合名不能是空字符串""。 集合名不能含有\0字符(空字符),这个字符表示集合名的结尾。 集合名不能以"system."开头,这是为系统集合保留的前缀。 用户创建的集合名字不能含有保留字符。有些驱动程序的确支持在集合名里面包含,这是因为某些系统生成的集合中包含该字符。除 非你要访问这种系统创建的集合,否则千万不要在名字里出现$。
默认集合创建:
当向一个集合中插入一个文档的时候,如果集合不存在,则会自动创建集合。
提示:通常我们使用隐式创建文档即可。
删除集合
# 一般删除 db.集合名.drop() # 特殊字符删除 db.getCollection("集合名").drop(); ########################## > db.getCollection('table-03').drop(); true > db.getCollection('table-03').drop(); false # 特殊字符使用这种删除会报错 > db.table-03.drop() 2022-02-02T14:24:24.124+0800 E QUERY [js] uncaught exception: TypeError: 3.drop is not a function : @(shell):1:10