「这是我参与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数据,以及复杂查询等,下期再介绍,有什么需要交流的,大家可以随时私信我。😊