MongoDB基础
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB基础相关的知识,希望对你有一定的参考价值。
MongoDB基础
MongoDB简介
- MongoDB是一款跨平台、面向文档的数据库。可以实现高性能、高可用,并且能够轻松扩展。是一个基于分布式文件存储的开源数据库系统,下高负载的情况下,添加更多的节点,可以保证服务器性能。
- MongoDB也是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最想关系型数据库的,不采用关系模型主要是为了获得更好的扩展性,MongoDB不再有“行”(row)的概念,器运行方式主要基于两个概念:集合(collection)和文档(document)。
MongoDB的特点
- MongoDB的特点包括面向集合存储、模式自由、丰富的查询语言和多级索引、复制集机制、易于水平扩展、可插入存储引擎、跨平台多语言支持等。
- MongoDB安装简单,提供了面向文档存储功能,操作起来比较容易。
- MongoDB提供了复制、高可用性和自动分片功能。如果负载增加(需要更多的存储空间和更强的处理能力),它可以分布在计算机网络中的其他节点上,这就是所谓的分片。
- MongoDB支持丰富的查询表达式。查询指令使用JSON形式的标记,可以查询文档中内嵌的对象及数组。
- MongoDB支持各种编程语言:Puby、Python、Java、C++、php、C#等多种语言。
实验环境
主机 | 软件包 |
---|---|
CnetOS 7 | mongodb-3.6 |
MongoDB的安装
1、配置YUM源仓库
vim /etc/yum.repos.d/mongodb-org.repo
[mongodb-org]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc
vi /etc/mongod.conf
bindIp: 0.0.0.0 #监听地址
port: 27017 #监听端口
auth=true #开启用户认证
systemctl start mongod.service
netstat -anpt | grep 27017
tcp 0 0.0.0.0:27017 0.0.0.0:* LISTEN 3153/mongod
mongo
db.version() #版本号
3.6.6
2、MongoDB多实例
cp -p /etc/mongod.conf /etc/mongod2.conf
vim /etc/mongod2.conf
path: /data/mongodb/mongod2.log #日志文件存储目录
dbPath: /data/mongodb/mongo #数据存储目录
port: 27018 #端口不可相同
mkdir -p /data/mongodb/
cd /data/mongodb/
mkdir mongo #创建数据存储目录
touch mongod2.log #创建日志文件存储目录
chmod 777 mongod2.log #提权
mongod -f /etc/mongod2.conf #从第二个配置文件启动(-f:为强制)
mongo --port 27018 #进入
MongoDB基本操作
-
MongoDB的基础操作主要是对数据库、集合、文档的操作,包括创建数据库、删除数据库、插入文档、更改文档、删除文档和查询文档。
- MongoDB中常用的基本操作:
操作 | 描述 |
---|---|
show dbs | 查看当前实例下的数据库列表 |
show users | 显示用户 |
use <db_name> | 切换当前数据库 |
db.help() | 显示数据库操作命令 |
show collection | 显示当前数据库的集合 |
db.abc.help() | 显示集合操作命令,abc是当前数据库下的集合 |
db.abc.find() | 对当前数据库中abc集合进行数据查找 |
1、在MongoDB中创建和删除数据库
- 在MongoDB中如果数据库不存在,则创建数据库,否则切换到指定数据库;
mongo
use school #使用school数据库
switched to db school
show dbs #查看
school 0.078GB
local 0.078GB
db.dropDatabase() #删除数据库
{"dropped":"school","ok":1}
show dbs #查看
local 0.078GB
2、MongoDB的集合和文档操作
-
1)、 在MongoDB中使用insert()方法向集合中插入文档
例如:在abc集合中插入两个文档;一个插入id为1,名字是"zhangsan";一个插入id为2,名字为"lisi";
db.abc.insert({"id":1,"name":"zhangsan"})
db.abc.insert({"id":2,"name":"lisi"}) -
2)、在MongoDB中使用update()方法来更新集合中的文档
例如:将abc集合中的id为1,名字为"zhangsan"的文档中的名字更改为"wangwu";
db.abc.update({"id":1},{$set:{"name":"wangwu"}}) -
3)、在MongoDB中使用remove来移除集合中的数据
例如:将id为2,名字为"lisi"的文档删除;
db.abc.remove({"id":2}) -
4)、在MongoDB中使用drop()删除集合
例如:将abc集合删除;
db.abc.drop()
3、MongoDB数据的导入与导出
-
可以使用mongoexport和mongoimport命令来导出导入MongoDB的数据;
参数说明:
-d:指明数据库的名字
-c:指明集合的名字
-f:指明要导出的那些列
-o:指明导出的文件名
-q:指明导出数据的过滤条件 -
1)、数据导出操作
mongoexport -d school -d abc -o /opt/abc.json
#将school数据库中的abc集合中的数据导出到opt中的abc.json文件中 -
2)、数据导入操作
mongoimport -d school -d abc --file /opt/abc.json
#将opt中的abc.json中的数据导入到school数据库中的abc集合中
4、MongoDB中的数据备份与恢复
-
可以使用mongodump命令来备份MongoDB数据;mongorestore命令来恢复MongoDB数据;
参数说明:
-h:MongoDB所在的服务器地址
-d:需要备份的数据库实例
-o:备份的数据存放位置,该目录需要提前建立,在备份完成后,系统会自动在dump目录在建立一个test目录,在这么目录里面存放在数据库实例的备份数据。
mkdir /opt/backup #创建备份数据存放目录
mongodump -d school -o /opt/backup #备份
mongorestore -d school1 --dir=/opt/backup/school #恢复
5、复制数据库
-
在MongoDB中使用db.copyDatabase命令复制数据库;
db.copyDatabase("school","school2")
#将school数据库进行复制,名为school2
6、克隆集合
- 在多实例中可以将将一个实例中的数据库的集合克隆到另一个实例中;
mongod -f /etc/mongod2.conf
mongo --port 27018 #进入第二个实例
db.runCommand({"cloneCollection":"school.abc","from":"192.168.27.128:27017"}) #将第一实例中的school数据库的abc集合克隆到第二个实例中
7、授权启动
- 可以配置授权用户来访问MongoDB,启动时必须指定auth=true,否则授权不起作用;
use admin
db.createUser({"user":"root","pwd":"123","roles":["root"]})
db.auth("root","123") #登录
8、进程管理
db.currentOp() #查看进程
显示
"opid" : 4827,
db.killOp(4827) #终止进程
以上是关于MongoDB基础的主要内容,如果未能解决你的问题,请参考以下文章
ios - Heroku 和 MongoDb 上的自定义解析服务器错误 3080:JSON 文本没有以数组或对象开头,并且允许未设置片段的选项