ubuntu安装mongod、配置用户访问、添删改查

1、安装

1.1包管理公钥导入

wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -

执行结果截图如下:

1.2创建列表文件

lsb_release -dc

 ubuntu安装mongod、配置用户访问、添删改查_第1张图片

 根据你的Codename 来修改下方对应的命令,如果你的是jammy,就修改为jammy,如果是focal就修改为focal

echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list

执行结果如下:

1.3更新软件包列表

sudo apt-get update

 ubuntu安装mongod、配置用户访问、添删改查_第2张图片

1.4安装

sudo apt-get install -y mongodb-org

ubuntu安装mongod、配置用户访问、添删改查_第3张图片

 2、启动测试

2.1、启动

sudo systemctl start mongod

2.2、验证是否启动成功

sudo systemctl status mongod

执行结果如下:

ubuntu安装mongod、配置用户访问、添删改查_第4张图片

2.3其它命令

# 停止
sudo systemctl stop mongod
# 重启
sudo systemctl restart mongod

# 卸载
# 停止
sudo service mongod stop
# 删除包
sudo apt-get purge mongodb-org*
# 删除数据目录
sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongodb

2.4配置用户名密码、端口

将/usr/bin配置到PATH中

root@VM-8-10-ubuntu:/usr/bin# ./mongosh

ubuntu安装mongod、配置用户访问、添删改查_第5张图片

db.createUser({user:"hmblogs",pwd:"密码保密",roles:["root"]})

ubuntu安装mongod、配置用户访问、添删改查_第6张图片

db.auth('hmblogs','密码保密')

ubuntu安装mongod、配置用户访问、添删改查_第7张图片

然后使用eixt退出。

配置访问mongo必须要输入用户名密码,且能外网访问

vi /etc/mongod.conf

ubuntu安装mongod、配置用户访问、添删改查_第8张图片 此时mongo服务已无法启动成功

搜索资料发现有个方案,尝试后,mongo服务正常启动

/etc/mongod.conf配置如下:

ubuntu安装mongod、配置用户访问、添删改查_第9张图片

security:
  authorization: enabled

使用用户名密码登录:

./mongosh -u hmblogs -p

ubuntu安装mongod、配置用户访问、添删改查_第10张图片

尝试不使用用户名登录:

ubuntu安装mongod、配置用户访问、添删改查_第11张图片

发现还是可以进去。 但是已经连查看库的权限都没有了。

ubuntu安装mongod、配置用户访问、添删改查_第12张图片

2.5个人电脑本地使用客户端连接

推荐下载Robo 3T

ubuntu安装mongod、配置用户访问、添删改查_第13张图片

连接成功,可以继续使用了。

2.6、使用该root权限的账号,在admin库中,创建一个库,报错了,截图如下:

ubuntu安装mongod、配置用户访问、添删改查_第14张图片

 报错内容如下:

Failed to create database 'xx'.

Error:
GetLastError command failed: getLastError command is not supported

2.7数据库

创建数据库

use hmblogs

如果存在则切换,如果不存在则创建数据库。

ubuntu安装mongod、配置用户访问、添删改查_第15张图片

2.8操作集合

2.8.1集合新增数据

db.getCollection('Student').insert({"id":1,"name":"he",age:18})

ubuntu安装mongod、配置用户访问、添删改查_第16张图片

db.getCollection('Student').insertOne({"id":2,"name":"zhangsan",age:22})

db.getCollection('Student').insertMany([{"id":3,"name":"lisi",age:23},{"id":4,"name":"wangwu",age:23}])

ubuntu安装mongod、配置用户访问、添删改查_第17张图片

2.8.2集合修改数据

把已经存在的document内容复制出来,放在insert()里面

db.getCollection('Student').insert({"_id" : ObjectId("65bb70f5d50fd63eeca8f059"),"id" : 1,"name" : "he","age" : 18})

执行会报错,如下所示:

ubuntu安装mongod、配置用户访问、添删改查_第18张图片

如果改成save,预期会修改该条数据:

db.getCollection('Student').save({"_id" : ObjectId("65bb70f5d50fd63eeca8f059"),"id" : 1,"name" : "he","age" : 22}

ubuntu安装mongod、配置用户访问、添删改查_第19张图片

发现不行。

a.  $set修改器,添加属性以及对应的值,如果key存在则修改对应的值,否则添加属性以及对应的值

db.Student.updateOne({id:3},{"$set":{"sex":"nan"}})

ubuntu安装mongod、配置用户访问、添删改查_第20张图片

然后查看数据

ubuntu安装mongod、配置用户访问、添删改查_第21张图片

b.  $unset修改器,去掉属性以及对应的值

db.Student.updateOne({id:3},{"$unset":{"sex":"nan"}})

ubuntu安装mongod、配置用户访问、添删改查_第22张图片

c、$inc增加或者减少某个值

db.Student.updateOne({id:3},{"$inc":{"age":-3}})

年龄减少3岁

ubuntu安装mongod、配置用户访问、添删改查_第23张图片

ubuntu安装mongod、配置用户访问、添删改查_第24张图片

d、$push会在已有的数组末尾添加一个元素,如果没有则新增一个数组

db.Student.updateOne({id:3},{"$push":{"comments":{"advantage":"xxxxxxxxxx"}}})

ubuntu安装mongod、配置用户访问、添删改查_第25张图片

然后查看数据

ubuntu安装mongod、配置用户访问、添删改查_第26张图片

再次执行,看是否会追加新属性到数组后面

db.Student.updateOne({id:3},{"$push":{"comments":{"disadvantage":"缺点多"}}})

ubuntu安装mongod、配置用户访问、添删改查_第27张图片

ubuntu安装mongod、配置用户访问、添删改查_第28张图片

2.8.3查询文档

db.Student.find()

ubuntu安装mongod、配置用户访问、添删改查_第29张图片

 查询数据,则find()括号中的参数,则是json格式

 ubuntu安装mongod、配置用户访问、添删改查_第30张图片

2.8.4删除文档

db.Student.remove({_id: ObjectId('65bb70f5d50fd63eeca8f059')})

ubuntu安装mongod、配置用户访问、添删改查_第31张图片

db.Student.deleteOne({_id: ObjectId('65bb7113e74e91b7b63055a5')})

ubuntu安装mongod、配置用户访问、添删改查_第32张图片

2.8.5upsert使用

db.getCollection('Student').updateOne({"id":2},{"$set":{"name":"zhangsan",age:77}},true)

前面2个参数,参考修改那节,第三个参数是可选的,默认为false只修改数据不会添加数据。我这里写成了true,则表示,如果根据第一个参数能找到记录则修改对应的数据,否则就添加一条数据。

修改情况:

ubuntu安装mongod、配置用户访问、添删改查_第33张图片

 添加情况:

db.getCollection('Student').updateOne({"id":8},{"$set":{"name":"zhangsan8",age:88}},true)

注意,此时根据id为8查不出数据的:

ubuntu安装mongod、配置用户访问、添删改查_第34张图片

这是为什么呢,没有达到预期效果。

2.8.6排序

在 MongoDB 中使用 sort() 方法对数据进行排序,sort() 方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列。

ubuntu安装mongod、配置用户访问、添删改查_第35张图片

ubuntu安装mongod、配置用户访问、添删改查_第36张图片

2.8.7分页

在 MongoDB 中使用 limit()方法来读取指定数量的数据,skip()方法来跳过指定数量的数据

ubuntu安装mongod、配置用户访问、添删改查_第37张图片

2.8.8In查询

db.Student.find({age:{"$in":[20,23]}})

ubuntu安装mongod、配置用户访问、添删改查_第38张图片

2.8.9count

db.Student.find({age:{"$gte":20}}).count()

2.8.10or查询

db.Student.find({"$or":[{"age":20},{"age":23}]})

ubuntu安装mongod、配置用户访问、添删改查_第39张图片

2.8.11aggregate聚合

MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果。有点类似sql语句中的 count(*)、sum(*)这些。

db.Student.aggregate([{"$group":{"diffSex":"$sex","sextotal":{$sum:1}} }])

需求1:按性别分组,统计男生人数、女生人数。

参考网上部分博客写的,运行报错了,如下所示:

ubuntu安装mongod、配置用户访问、添删改查_第40张图片

MongoServerError: The field 'diffSex' must be an accumulator object

网上搜查资料发现:分组的参数的key一定要是"_id",不然会报错:“The field ‘xxx’ must be an accumulator object”

db.Student.aggregate([{"$group":{"_id":"$sex","sextotal":{$sum:1}} }])

需求2:按性别分组,统计男生的年龄和、女生年龄和。

db.Student.aggregate([{"$group":{"_id":"$sex","sextotal":{$sum:"$age"}} }])

需求3:按性别分组,统计男生的平均年龄、女生平均年龄。

db.Student.aggregate([{"$group":{"_id":"$sex","sextotal":{$avg:"$age"}} }])

ubuntu安装mongod、配置用户访问、添删改查_第41张图片

2.8.12模糊查询

db.Student.find({name:{$regex:"he"}})

ubuntu安装mongod、配置用户访问、添删改查_第42张图片

db.Student.find({name:{$regex:/^he/}})

正则表达式匹配

ubuntu安装mongod、配置用户访问、添删改查_第43张图片

你可能感兴趣的:(系统Ubuntu,ubuntu,linux,运维)