linux系统mongodb数据库基本命令操作
最近有个数据库要修改数据,存储是用的mongodb,因此在这个过程中,把常用的操作命令总结一下,以后如果长时间没弄了,再回过头来看看这篇文章,也能轻松上手
docker容器部署
Linux服务器上的MONGODB是使用DOCKER容器部署的,我们看看部署的代码
docker-compose配置文件 mongodb.yml内容如下:
version: '3'
services:
mongo:
image: 'mongo:4.0.4'
restart: always
ports:
- '27017:27017'
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: mongodb
hostname: 'db-mongo'
container_name: 'db-mongo'
networks:
- database
volumes:
- '/k8s/db/mongodb:/data/db'
networks:
database:
external: true
可以从中看到,使用到了用户鉴权认证,账号 root 密码是:mongodb,后面在进行操作时会用到。
mongodb操作
- 进入容器
docker exec -it db-mongo /bin/bash
进入到db-mongo容器后,显示如下:
root@db-mongo:/#
此时可以输入MONGODB的操作命令了
- 查询所有数据库
先输入一个mongo 进入mongodb指令控制台
root@db-mongo:/# mongo
MongoDB shell version v4.0.4
connecting to: mongodb://127.0.0.1:27017
Implicit session: session { "id" : UUID("3b7a4229-71d4-4bf9-8ebc-8d935877840c") }
MongoDB server version: 4.0.4
可以看到MONGODB的版本信息,端口信息,SESSION信息等
然后切换到admin
> use admin
switched to db admin
执行show databases; 此时直接执行会报错
> show databases;
2024-11-09T02:47:37.680+0000 E QUERY [js] Error: listDatabases failed:{
"ok" : 0,
"errmsg" : "command listDatabases requires authentication",
"code" : 13,
"codeName" : "Unauthorized"
} :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
Mongo.prototype.getDBs@src/mongo/shell/mongo.js:67:1
shellHelper.show@src/mongo/shell/utils.js:876:19
shellHelper@src/mongo/shell/utils.js:766:15
@(shellhelp2):1:1
可以看到这里提示报错了,没有权限,这就要用到前面说的账号和密码了,用这些信息来做一个认证鉴权
> db.auth('root','mongodb')
1
输出1表示鉴权成功了。 我们再执行show databases;
> show databases;
admin 0.000GB
config 0.000GB
iot 5.519GB
local 0.000GB
可以看到所有的数据库,以及存储占用的空间大小,默认单位是GB
那么怎么查看数据库下面的数据集合呢
先切换数据库,以iot为例,先切换为iot数据库
> use iot
switched to db iot
再去查询有哪些集合
> show collections
iot_sensor
sensor_data
咱们这里有两个集合,我们选其中之一,去查里面的全部数据
> db.iot_sensor.find()
{ "_id" : ObjectId("5f080c386f6046000121f424"), "devNo" : "430923-001-191119-003", "devAddr" : "17", "devReg" : "0", "devValue" : "26.84", "messageId" : "1281475802076335617", "createdTime" : ISODate("2020-07-10T06:30:14.541Z"), "deleted" : false, "_class" : "com.dmlzhny.smartny.iot.mongo.entity.SensorMongo" }
{ "_id" : ObjectId("5f080c386f6046000121f426"), "devNo" : "430923-001-191119-003", "devAddr" : "17", "devReg" : "1", "devValue" : "23.88", "messageId" : "1281475802076335617", "createdTime" : ISODate("2020-07-10T06:30:14.541Z"), "deleted" : false, "_class" : "com.dmlzhny.smartny.iot.mongo.entity.SensorMongo" }
这样就基本完成了查询,那么如果要带条件查询,怎么查呢?
例如我们要查设备编号带003的记录,可以使用正则匹配
> db.iot_sensor.find({"devNo":{$regex:/003/}});
{ "_id" : ObjectId("5f080c386f6046000121f424"), "devNo" : "430923-001-191119-003", "devAddr" : "17", "devReg" : "0", "devValue" : "26.84", "messageId" : "1281475802076335617", "createdTime" : ISODate("2020-07-10T06:30:14.541Z"), "deleted" : false, "_class" : "com.dmlzhny.smartny.iot.mongo.entity.SensorMongo" }
{ "_id" : ObjectId("5f080c386f6046000121f426"), "devNo" : "430923-001-191119-003", "devAddr" : "17", "devReg" : "1", "devValue" : "23.88", "messageId" : "1281475802076335617", "createdTime" : ISODate("2020-07-10T06:30:14.541Z"), "deleted" : false, "_class" : "com.dmlzhny.smartny.iot.mongo.entity.SensorMongo" }
结束语
这里我们只介绍查询,至于新增、修改、删除,其实也挺简单的
db.collection.insert 新增,示例:
db.collection.insert({_id:'001',devNo:"xxxx"...});
批量插入可以传入数组进行操作
db.collection.update 修改,示例:
db.collection.update({_id:'001'},{$set:{devNo:'xxxx'}},{multi:false});
update(条件,更新字段,是否更新查找出来的所有记录)
当然还有 updateOne(); 仅更新查找出来的第一条
updateMany(); 更新查找出来的所有记录
db.collection.remove 删除,示例:
db.collection.remove({}); //删除所有
db.collection.remove({_id:'001'}); // 删除查询出来的ID为001的所有记录
db.collection.remove({_id:'001'},{justOne:true}); // 删除查询出来的ID为001的第一条记录
结束语
关于mongodb的基本操作就简单介绍到这里,还有一些较为复杂的操作这里并未详细展开讲,比如多条件查询、如何分页、数据汇总等。今后有时间再来扩展补充
欢迎大家多多关注和支持! 我们一直会保持不定期更新,绝对不会放弃,让我们都遇到更好的自己!