MongoDB 安装与基本操作
1. MongoDB 与 MySQL概念对比
MySQL | MongoDB | 描述 |
---|---|---|
database | database | 数据库 |
table | collection | 表/集合 |
row | document | 行/文档 |
column | field | 字段 |
2. MongoDB 安装
2.1 更新源
首先,确保你的包是最新的。打开终端并输入:
apt-get update && sudo apt upgrade -y
2.2 在线安装
apt-get install mongodb
2.3 查看服务状态
systemctl status mongodb
2.4 创建用户名密码
利用mongo命令进入MongoDB
root@ecs-94a9:~# mongo
MongoDB shell version v3.6.3
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.6.3
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:
2021-10-14T14:35:26.608+0800 I STORAGE [initandlisten]
2021-10-14T14:35:26.608+0800 I STORAGE [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2021-10-14T14:35:26.608+0800 I STORAGE [initandlisten] ** See http://dochub.mongodb.org/core/prodnotes-filesystem
2021-10-14T14:35:27.073+0800 I CONTROL [initandlisten]
2021-10-14T14:35:27.073+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2021-10-14T14:35:27.073+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2021-10-14T14:35:27.073+0800 I CONTROL [initandlisten]
2021-10-14T14:35:27.074+0800 I CONTROL [initandlisten]
2021-10-14T14:35:27.074+0800 I CONTROL [initandlisten] ** WARNING: You are running on a NUMA machine.
2021-10-14T14:35:27.074+0800 I CONTROL [initandlisten] ** We suggest launching mongod like this to avoid performance problems:
2021-10-14T14:35:27.074+0800 I CONTROL [initandlisten] ** numactl --interleave=all mongod [other options]
2021-10-14T14:35:27.074+0800 I CONTROL [initandlisten]
>
> use admin;
switched to db admin
> db.createUser({ user:'admin',pwd:'sia12345678',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]})
Successfully added user: {
"user" : "admin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
},
"readWriteAnyDatabase"
]
}
> db.auth('admin', 'sia12345678')
1
> exit;
之后修改/etc/mongodb.conf文件,将auth = true这一行打开
# mongodb.conf
# Where to store the data.
dbpath=/var/lib/mongodb
......
# Turn on/off security. Off is currently the default
#noauth = true
auth = true
......
2.5 查看27017是否可以远程访问
root@ecs-94a9:~# netstat -ano|grep 27017
tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN off (0.00/0/0)
unix 2 [ ACC ] STREAM LISTENING 86902045 /run/mongodb/mongodb-27017.sock
可以看出不允许访问,修改/etc/mongodb.conf文件,将bind_ip = 127.0.0.1改为bind_ip = 0.0.0.0
同时针对auth = true
# mongodb.conf
# Where to store the data.
dbpath=/var/lib/mongodb
#where to log
logpath=/var/log/mongodb/mongodb.log
logappend=true
bind_ip = 0.0.0.0
#port = 27017
......
2.6 重启MongoDB服务
systemctl restart mongodb
3. 显示数据库
show dbs;
use db;
db;
4. 增加数据
db.Device4.insert({
deviceid: 'device1',
devicename: '压力表',
devicetype: '计量表',
attribute: '压力值',
dataInt: NumberInt(2),
dataDouble: 2.35,
unit: 'Mpa',
time: ISODate("2021-10-11 07:58:51")
})
5. 删除数据
db.Device4.remove({devicename:'压力表2'})
6. 更新数据
db.Device4.update({devicename:'压力表3'}, {$set:{dataDouble:9.99}})
7. 查看数据
db.Device4.find()
db.Device4.find({deviceid: 'device1'})
8. 数据导出与导入
数据导出:
mongodump --host 127.0.0.1 --port 27017 -u admin -p sia12345678 --db KnowledgeGraph --collection Device4 -o /tmp/mongobak --authenticationDatabase admin
mongoexport --host 172.23.8.16 --port=1240 -u spark -p spark --db locateInfo --collection dataCollect --out locateInfo.json
数据导入:这部分还是利用Navicat吧