SpringBoot整合MongoDB(一)

159 阅读2分钟

「这是我参与2022首次更文挑战的第1天,活动详情查看:2022首次更文挑战

1、前言

由于最近在做一个APP内的资讯功能,然后需要根据用户的阅读习惯,进行个性化的推荐。对于用户的阅读、喜欢、收藏等行为的记录,经过技术选型会议的讨论,最后决定使用MongoDB存储。这块功能的开发任务也是分到了我这里。之前也没接触过mongo,刚开始以为和redis差不多,入门应该不难。然而NoSQL数据库与关系型数据库的差别还是很大的,特别是需要进行一些数据统计与分析的时候,弄起来很麻烦。这里就为大家分享下,遇到的一些问题与总结。

2、安装MongoDB

这里我是使用docker来安装的mongo,具体步骤如下:

# 1、拉取最新mongo镜像
docker pull mongo:latest
​
# 2、创建容器
# 先创建两个文件夹、一个用来挂载数据、一个用来挂载配置,这样即使容器出现问题,数据还在。我们只需要重新创建一个新容器就可以加载原有数据了。
mkdir -p /data/mongo/4.0.3/db
chmod 777 /data/mongo/4.0.3/db 
mkdir -p /data/mongo/4.0.3/configdb
chmod 777 /data/mongo/4.0.3/configdb  
​
docker run  \
--name mongodb-4.0.3 \
-p 27017:27017  \
-v /data/mongo/4.0.3/configdb:/data/configdb/ \
-v /data/mongo/4.0.3/db/:/data/db/ \
-d mongo:latest --auth
​
# 这里的auth表明登录mongo需要账户验证# 3、进入容器,创建用户
docker exec -it  5282c43320fd   mongo admin
​
# 创建一个admin用户
db.createUser(
    {
        user:"root",
        pwd:"root",
        roles:[{role:"root",db:"admin"}]
    }
);
# 用root用户验证重新登录
db.auth('root', 'root');
# 创建普通用户
db.createUser({ user: 'test', pwd: 'test', roles: [ { role: "readWrite", db: "test" } ] });
​
# 4、连接使用mongo,这里我用的Navicat作图形化界面(PS:要注意验证库需要使用admin库)

3、MongoDB的常用命令

  • 查看数据库
show dbs;
  • 查看集合 --就是数据表
show collections;
  • 插入文档(就是每一行数据。PS:MongoDB中无法对字段长度做自定义限制,只要当前文档不大于16MB即可。)
db.collection_name.insert(数据);
  • 查看集合下的数据,如果有查询参数,加到find()中即可
db.collection_name.find();
  • 删除文档
db.collection_name.remove(条件);
  • 修改文档
db.collection_name.update(条件,{$set:修改后的数据});

好了、本期就先介绍到这里,对于如何在代码中操作mongo数据,以及复杂查询等,下期再介绍,有什么需要交流的,大家可以随时私信我。😊